Using dynamic instead of reflection

Support types inheriting from IDictionary<,> and ICollection<>
Caching type information to make things faster
Remember exception circumstances to skip them later
Support for arrays
Skip list binding when "Index" property is found... let the base binder do the work