refactor($compile): allow adding directive collectors and extractors

Refactor `$compile` so it is able to accept directive collectors and directive extractors. Add all the current directive collectors and directive extractors that handle the current operations

This patch is to start the conversation if the refactor into directive collectors and directive extractors should be done at 1.3 or if this should wait to 2.0