Improved compatibility

Added some fixes for multiple cases which weren't completely handled, all with full test coverage. I also found some issues while implementing the changes:

* The custom param regexp replaces periods, slashes and asterisks which means you can't write proper regexps
* The asterisk feature after a param is pretty broken. At the moment, it's creating a new capturing group - but it's not added to the params array which means the index isn't accurate for anything after it. Not sure how useful the asterisk feature is, but maybe the meaning could be altered by:
* * Pushing an empty element in the keys array
* * Change an asterisk after a param to extend the current param patch, either by repeating the current param or just capturing everything trailing in the same matching group

All tests are green in the Express repo. Interested in knowing some thoughts on these issues too, as well as any possible improvements that can be made in the future.

/cc @visionmedia @jonathanong @defunctzombie