Non-String Values are Not URL Encoded in Query String

If a value can not be directly cast to a `string`, it is not URL encoded when used in a query string. For example, if you have a DTO that has a `DateTimeOffset` named `FromDate`, the service stack client passes in on the query string as:

`/mydtoroute?fromdate=2013-05-23T20:47:40.955+00:00`

When this gets to the server, deserialization fails and you get a `400` (Bad Request) error. Both : and + are reserved and need to be URL encoded:

`/mydtoroute?fromdate=2013-05-23T20%3A47%3A40.955%2B00%3A00`

My code change URL encodes all query string values. If they can't be cast to a string, they are URL encoded after formatted.