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
refactor(typeahead): move out input formatter
refactor(typeahead): move out typeaheadLoading
refactor(typeahead): rearrange methods

An attempt to make things clearer.
refactor(typeahead): capitalize controller name
fix(typeahead): clicking to select was broken

On blur event check if mouse is over the drop down before resetting
matches.

Introduce mouseIsOver in the controller but this will be removed
shortly.
refactor(typeahead): use isolate scope

Private variables that only deal with the pop-up go into the isolate
scope.
Merge branch 'feature/add-typeahead-controller'

Conflicts:
	src/typeahead/typeahead.js