Multiple books are now supported by bestiary dataset.

 * bestiary.json now wraps the each bestiary array in an object which
   uses the source books name as its key.
 * data.Monster now has an (optional) book paramater / instance field
 * json parsing code folds down the books into a single list of
   data.Monsters/
Data loading now supports a custom dataset

Custom data sets allow for 3rd parties to host Manticore themselves
and provide a dataset of their own custom monsters.

manticore.ts now requests two JSON files, bestiary.json and
custom.json. bestiary is required, but custom is optional. These are
merged into a single dataset before they are passed to createBestiary.

This also includes some corrections to the type of PromiseStatic, and
also introduces Promise.of (monadic return)
Merge branch 'master' of https://github.com/brehaut/manticore