Rewrite to support Swagger 2.0 references properly (and more...sorry)

As I rewrote nearly everything to support all JSON References, fixing a number
of bugs along the way couldn't be avoided.  (For example, to make sure we were
processing all definitions/references, I had to implement support for 2.0
security.)

I realize this is bad taste for software development, large code commits that
add/fix multiple things, but due to the nature of this rewrite, it was
unavoidable.  I hope to avoid this in the future.

Below are the noteworthy additions and fixes but please see the documentation
and release notes for more detailed information:

* JSON References, internal and remote, work everywhere now
* All Specification APIs now require a callback since the underlying code can be
asynchronous
* Specification#composeModel was renamed to Specification#composeSchema and it
will generate *real* JSON Schemas instead of the fake ones before
* All middleware now require an initialization phase to validate the Swagger
document(s) prior to starting the server
* swaggerMetadata middleware has changed the structure of `req.swagger` to
support new 2.0 features and 1.2 fixes

Fixes #27
Fixes #54
Fixes #55
Fixes #63
Fixes #65
Fixes #68
Fixes #69
Fixes #71
Fixes #73
Fixes #79