Simplify deprecation machinery: don't cache previous messages, and use warnings rather than logging.

Alternative to #196.

This PR simplifies the Traits `@deprecated` decorator in two ways:

1. It removes the cache: if an application using Traits doesn't want to see duplicate log message or warnings, then it should be the job of the application to configure warnings / logging appropriately.  The cache was also making testing difficult (see #190 and #196).

2. It replaces the logging call with a simple `DeprecationWarning`.

If there's a strong case for using logging instead of warnings, we can revert the second part.

Updated the PR to add a test, along with an `assertDeprecated` method to `UnittestTools`.


No: it should be entirely harmless on Python >= 3.4: it clears out the `__warningregistry__` dict, but on Python 3.4 the `__warningregistry__` entries are effectively invalidated (but not removed) every time the warnings filterlist is touched [1], so all we're doing is removing entries from the registry that wouldn't have been used anyway.

The tests pass on Python 3.4, and we have Travis CI running on 3.4 too, so we should be pretty safe.

[1] There's a clever counter mechanism for this; see the Python issue for the details.