TryToParsePrimitiveTypeValues numeric values default to decimal

Changed default behaviour of TryToParsePrimitiveTypeValues to always parse numeric types as either decimal, float or double.

This IMO is the safest choice as you shouldn't get any issues down the line working with decimals.
It is also the what I would expect from json.
Added config value TryToParseNumericType to allow the 'best' type to come back as per expected current behaviour
Added unit tests around behaviour new and existing behaviour
Reverted some changes from commit 9e8fd8e0091237a52c28af9f925c5edc225c837a to fix behaviour for
numeric type matching (looks like all unsigned numbers would come back as ulong, but before the commit best fit)

Fixed issues raised in:
http://stackoverflow.com/questions/17368027/override-parseprimitive-in-servicestack-text
http://stackoverflow.com/questions/13716838/how-to-get-servicestack-to-serialize-deserialize-an-expando-object-with-correc