added storage of item as object, destroy method with teardown

* added storage of item in data('ta-data-value') instead of attr('data-value')to accomodate for item objects (vs item as string)
* add valKey to defaults to accomodate item as object (vs item as string). if item = {id:'something',value:'displayedValue'} valKey = 'value'
* for dev added jshint asi: true to disable semicolon checker of jslint
* added destroy method with teardown
* added stoplisten method to off events (called by destroy)
* added .typeahead.instance namespace to events for easy removal
  e.g. append to regular events focus.typeahead.instance