Added 'compute' value to the Dataset, along with corresponding unit tests

:warning: Please note that although this pull will let you use an arbitrary `computed` function-argument as expected, the API for this pull is incompatible with the 0.10 branch of Typeahead.js.

In other words, while this pull may tide you over, be prepared to refactor for 0.10 and onwards.

----

Regarding Issue #95, this pull implements a way to address the issue of arbitrary synchronous and asynchronous computed datasets. While it may not be what you had in mind or the direction you want to take, I hope it gives helpful food for thought.

If this were merged the datasets arguments would accept a new `computed` argument. In the synchronous case that computed option takes a single argument, the query.

```javascript
this.dataset = new Dataset({
   computed: function (q) { return ['charlie']; }
});
```

An asynchronous version of `computed` takes two arguments - the `query` and a `done` callback that the user calls with the results they wish to add to the suggestions.

```javascript
this.dataset = new Dataset({
  computed: function (q, done) {
    setTimeout(function () { done(['alpha', 'beta', 'lucy']); }, 0);
  }
});
```

Note that the asynchronous version uses the same logic as `remote` requests to check for duplicate results, but the synchronous version does not do any checks for duplicates.

Neither the synchronous nor asynchronous utilizes the typeahead caching. It is left to the user to determine if and how they want to cache results (I suspect some complex applications in particular may want to do caching and control over limited `localStorage` resources themselves).

I hope that proves useful and interesting. Cheers.