[doc] Document the CORS options
[fix] Don't namespace options under CORS.
[fix] Don't send CORS headers for the client or other requests.
[fix] Also apply CORS headers to our client file.
[fix] Fix broken table due to new line
Revert "Revert "[major] HTTP Access Control (CORS)""

This reverts commit a83a5bd62a0bd96fa1396571d26cb2c097caa4ad.

Conflicts:
	transformer.js
[fix] Add ability to set the maximum number of messages that can be queued by the client
[api] Adding new middleware methods
[major] Use the same prototype pattern
[major] Use fuse instead of predefine directly
[minor] Added `Transfomer.forEach` for iterating over the middleware.
[fix] Use `splice` to remove a middleware layer and fix the `indexOfLayer` method
Update README.md

Just fixing up some wording as I read through :)
Merge pull request #177 from thataustin/patch-1

Update README.md
[major][api] Phase out transformer internals to middleware layers

The main reason for this is because the code will become to complicated when we have
to deal with middleware layers AND the old code structure at the same time. While
these changes were only planned for when 2.1 was released so we could see how the
middleware system was working it was a change that had to be done now.

This change is currently breaking our tests as middleware layers are not yet called
or initialised for each request.
[fix] Remove unused `unknown` event.
[fix] Actually call the middleware layers.
[fix] Tests are passing again. We're not using an async pattern.
[minor] Allow middleware only to be ran for http or upgrade's
[minor] Don't run these middleware layers for `upgrade` events
[fix] Reference the function where there properties are added not the layer object it self.
[minor] Bump dev dependencies
[fix] Improved clean up to prevent crashes when you don't have a server or transformer.