feat(typeahead): Add typeahead controller

Allows other directives to extend functionality of controller.

Since typeahead-popup is a sibling that is right after the typeahead
input element, the controller can't be shared through the directive's
'require' option. As such, it's shared through the new child scope.

I'll put up an example that fixes #764.