An initial pass at throwing an exception for unstubbed invocations.

This is an initial solution for https://code.google.com/p/mockito/issues/detail?id=346

It doesn't solve all the use cases on that issue but may be a good enough solution for now.

FYI, I moved ThrowsSmartNullPointer out of ReturnsSmartNulls into its own package private class so it could be reused by the new ThrowsSmartNulls class.

Please let me know if the name of the new ThrowsSmartNulls class could be improved, however I felt that keeping "SmartNulls" as part of the name made sense, since it is
a) still returning smart null objects for unstubbed methods that return non-primitive and non-final types (the smart null objects throw smart null exceptions on access via method calls, except for toString() calls), and
b) now throwing smart null exceptions immediately for methods that return primitive or final types.
The javadoc and example need to be updated to better expplain the usage of this answer ;)

i.e. for the code sample showing methods with primitive return or final return types. for example : 

```java
IMethods mock = Mockito.mock(IMethods.class, Mockito.THROWS_SMART_NULLS);
//calling unstubbed method here:
mock.arrayReturningMethod();
// SmartNullPointerException is thrown.
// Exception's cause links to unstubbed <i>mock.arrayReturningMethod()</i> - just click on the stack trace.
```