Fix loose matching when validating route schemes.

This is a fix for loose matching when validating route schemes. This is fairly edge case but it's still worth fixing none the less. The tests demonstrate what's happening.

`in_array` is renowned for being a pain.

- http://www.sitepoint.com/3-strange-php-facts-you-may-not-know/ (The Mystery of Value Appearance)
- http://stackoverflow.com/questions/2739441/odd-behaviour-with-phps-in-array-function