Improved memoization:
 - Uses a WeakDictionary from the ch.codeplex.com library, this removes the possibility of memory-leaks whilst maintaining the compositional nature of `Func<T,R>`.  In a unit-test memoizing 0 -> Int32.MaxValue, the NUnit runner never jumped above 45mb.
 - memo() must use a reference type for R, so the old memoization function is kept for completeness, except it's now called memoUnsafe, with warnings in the comments about potential memory leaks.
 - Renamed the AsEnumerableOne methods to AsEnumerable and removed the infinite variants.

Thanks for the great feedback:
@jonpryor - https://github.com/louthy/language-ext/issues/7
@brandf - https://github.com/louthy/language-ext/issues/3