Floating point optimization and unit tests

First notice that I added NumberStyles.Float when parsing Decimal goal of this is to be able to parse 1E-05 or in words exponent notation this is what we want right? See http://stackoverflow.com/questions/3879463/parse-a-number-from-exponential-notation for more info...

In unit tests I added some tests from Mono project hope you don't mind since it's under MIT..

And biggest change... I totally rewritten _ReadDouble, _ReadFloat and _ReadDecimal best way to see changes is to look at final version.

Idea is very simple and I believe robust and faster also notice that some new tests were failing with old code while none with new code.

Some perfromance tests difference is even higher in cases of "123.4442E-12"
```csharp
for (int i = 0; i < 10; i++)
{
    Stopwatch SW = Stopwatch.StartNew();
    for (int j = 0; j < 1000000; j++)
    {
        JSON.Deserialize<double>("123.4442");
    }
    SW.Stop();
    Console.WriteLine(SW.ElapsedMilliseconds);
}
```

New version:
```
566
426
427
424
424
427
425
425
425
430
```

Old version:
```
620
462
457
459
464
457
459
458
464
461
```