Numeric Strings Fail on 0

## Overview

When dealing with numbers as a string type; any number should be allowed.  This is especially important when dealing with values that can be possible in a big integer as 64 bit handling is not always available.  Due to this; a numeric value of 0 presently believes that it is an unset value.  In which case if you have big integers with a 0 based value this would then fail the condition as you are handling it as a string.

In addition to this; 0 is not an empty string but a string at a value of '0'.

## Changes

* Change processing order of strings
  - The ordering can potentially cause issues because the __toString method of an object needs to be checked against additional conditions after the value has been processed.
* Allow for a string of 0 when passing numerically as 0