Always fail when !(actual is expected.GetType()) (Except for IEnumerables)

This pull request resolves issue #65 by removing the generic type parameter from ShouldBe(expected) and performing a type check before checking the values. This solves the issue where a type has an implicit cast to a type that is an IEnumerable of itself, as discussed in issue #65, and this StackOverflow question: http://stackoverflow.com/questions/19998878/shouldly-and-json-net-this-passes-jtoken-parse-shouldbehello