Optimized for V8

1. Exchanged the method 'matchesSelector' to newer (according to spec) 'matches'.
2. Defined prototype methods using defineProperties to force to not enter the hash-table mode.
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#522-the-object-has-enumerable-properties-in-its-prototype-chain
3. Freezed the Bragi object (using Object.freeze) to force transform it into "fast object"
Fast object: accessing the property in time O(1).
4. Cleaned up the code a little bit - seperated some functions.
5. Some other minor changes.

Feel free to change it to fit your needs. As the big company, you probably have your own standards to make the code more readable ;)