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.

The new structure made this extra closure here necessary to have TEXT_NODE_NAME only privately. I think it's a bit harder to read this way