Enhancements for ExpressionParser

This library is great!
I was missing some range comparisons as described in https://github.com/npm/node-semver
Here is what I've added:
* Support the caret (^) operator
* X-Ranges: Implemented for *, x and X
* Improved Tilde ranges to work with the examples at https://github.com/npm/node-semver#tilde-ranges-123-12-1

I'd really appreciate if this can be merged so I could use this library the same way it behaves in JS (mostly for implementing stuff for Bower and NPM).
The key for this pull request is to be able to use Version.satisfies(<range>) and simply provide it with the supported ranges from bower and npm.