huge modifications, hope i didn't break something:

Original commit message from CVS:
huge modifications, hope i didn't break something:
- added functions for setting/getting locked state of elements. gst_element_lock_state syncs the pads state with the state of its parent.
- made all gst_element_link_* functions call gst_element_link_pads_filtered
- gst_element_link_pads_filtered now accepts NULL as a pad name.
- make sure the link functions are only called when the elements are paused
That's it.
diff --git a/gst/gstelement.h b/gst/gstelement.h
index 26e0a1e..f750957 100644
--- a/gst/gstelement.h
+++ b/gst/gstelement.h
@@ -325,6 +325,10 @@
 
 void 			gst_element_error 		(GstElement *element, const gchar *error, ...);
 
+gboolean		gst_element_is_state_locked	(GstElement *element);
+gboolean		gst_element_lock_state		(GstElement *element);
+gboolean		gst_element_unlock_state	(GstElement *element);
+
 GstElementState         gst_element_get_state           (GstElement *element);
 GstElementStateReturn	gst_element_set_state		(GstElement *element, GstElementState state);