Correctly handle encoded colons in routes (Fixes #776)

This uses a negative lookahead assertion to ensure the colon is
not followed by a character that will make it a key.  In that
case, it should be treated as a literal colon, and handled similar
to other literal special characters.