feat(typeahead): add the typeahead directive


Typeahead with tests.

There are still some options that are missing and should be added in the future but I think it is a good start. 

I'm sure that there are ways of improving the code so a strict review is in order!