Remove hash code, used as a key in dictionary
https://github.com/MvvmCross/MvvmCross/blob/a344bda74968d879a6b32bda82df060a98b596ea/MvvmCross/Binding/Parse/PropertyPath/MvxSourcePropertyPathParser.cs#L22

How about the collisons? Where is the guarantee that this code is safe, and you will never take cached value of other string with the same hash code?

```
        private static MvxSourcePropertyPathParser _parser = new MvxSourcePropertyPathParser();

        [Test]
        public void NAME()
        {
            var random = new Random();
            while (true)
            {
                var expression = Enumerable.Repeat(0, (random.Next() % 10)+3).Select(_ => RandomString((random.Next() % 10)+3, random)).JoinToString(".");

                var mvxPropertyTokens = _parser.Parse(expression);


                var firstOrDefault = mvxPropertyTokens.FirstOrDefault();

                if (firstOrDefault != null)
                {
                    var n = firstOrDefault as MvxPropertyNamePropertyToken;
                    var orDefault = expression.Split(".").FirstOrDefault().NotNull();
                    Assert.AreEqual(n.PropertyName, orDefault);
                }
            }
        }

        private static string RandomString(int length, Random random)
        {
            const string chars = "qwertyuiopasdfghjklzxcvbnm";
            return new string(
                Enumerable.Repeat(chars, length)
                    .Select(s => s[random.Next(s.Length)])
                    .ToArray());
        }
    }
```

I was added simple test, and it fails on a 40000 element.