Support @Spy AbstractClass/Interface

Fixes #126
backward compatible
Tidy-up, removed some duplication
Tidy-up, tweaked exception messages.
Improved an exception message
tidy-up, removed code not covered by tests, added TODOs
Tidied-up the tests and behavior

Changed the code so that we don't allow creating spies for interfaces (this is how it worked before recent changes, so it is a change that makes Mockito more backwards compatible). Tidied up tests and test names. Tightened test coverage.
Tidied-up the tests and the exception messages
Fixed the isSpy() behavior
Added TODOs.
Tidied up docs and coverage related to isSpy/isMock