Improve the Uri parsing speed
This affects MonoTouch startup as our dictionaries are a little bit
slow to be created now that we use Dictionary<> hashes for switch
statements.
Some timings:
Using a simple block of if's is twice as slow as the compiler generated
switch statement. But using this tuned code is faster than the
compiler generated code, with a million loops on x86-64:
With "http": .10 vs .51 (first check)
with "https": .16 vs .51 (second check)
with "foo": .22 vs .31 (never found)
with "mailto": .12 vs .51 (last check)