Change behavior of '__.throws(...)' to be more consistent with other matchers and allow detailed exception matching

If an argument is provided, it is now treated as "value or matcher", i.e. it is wrapped in "equalTo" if it is not a matcher.
Previously, the argument was unconditionally treated as expected type and wrapped in "instanceOf" and matcher arguments were not supported.
Add "__.fail(...)" for unconditional assertion errors.
Update readme for v2.0
2.0.0