refactor(typeahead): Move typeaheadEditable out

Unfortunately, this depends on typeaheadEditable running after the post
linking function of the typeahead directive.

Note this and solve this later.
feat(typeahead): Add typeaheadController

Maintain feature parity. Some duplicate code.
refactor(typeahead): Remove extra calls to loading
refactor(typeahead): Clean up select logic
feat(typeahead): Move select into controller

- Add selectListeners
feat(typeahead): Move scope variables into ctrl
feat(typeahead): Add convenience methods

Right now these are private methods.
feat(typeahead): Add queryParsers

queryParsers support promises, which can get interesting...
refactor(typeahead): Move out typeaheadMinLength

Using query parsers, this can now be its own directive.
refactor(typeahead): Move out waitMs logic

And the magic of promises...
fix(typeahead): don't rely on order of $parsers (WIP)

Add tests later for order of $parsers.
refactor(typeahead): remove duplicate parserResult
chore(carousel): update, simplify doc comment example