Use Jackson as the mapper for the JsonConverter

We move away from the default Gson implementation to include Jackson's powerful and flexible deserialization features.
We are particularly interested in the ability of Jackson to use a proper Java constructor (or Builder), thus ensuring the immutability of our models.
That way during the construction of our model, we can manipulate the input to our needs and we can raise exceptions if certain conditions are not met.
We fix a couple of other things in the process, namely:
- correct the method that JsonConverterTest should test,
- add double quotes to json tags is octocat.json,
- correct typo in github-android-smoke module name,
- remove magic numbers from PublicReposListActivityTest.
Add @Nonnull static annotation to model construction

Our Repository model should throw an IllegalArgumentException if the name is null.
Moreover, we want static analysis tools as FindBugs to detect as many NPE as possible at compile time.
Intellij IDEA provides out of the box support for a @NotNull annotation but we prefer to tweak its settings a little bit and make it use javax.annotation (for better portability).
We add javac2-maven-plugin as a plugin to instrument java bytecode with null checks even with maven.
As an immediate result, Intellij now suggest to remove useless checks in the equals() and hashCode() methods.