AngularJS sophisticated Typeahead / DropDown component