Full Knockout Support

This pull request will provide extensive knockout support. Also, getOptionByValue() and getInputByValue() we rewritten to be exponentially faster, please take these changes. Also, added a new method called clearSelection() which clears all of the selected items.

This is an example of it working perfectly.