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`.


Are we breaking compatibility with Python >= 3.4 by using this hack?