Adds @Nullable and @NotNull (from org.jetbrains.annotations)

Adds dependency on org.jetbrains.annotations and adds @Nullable and @NotNull annotations to a few developer-facing classes.  

I'm skeptical that you'd want to merge this for a number of reasons, but just wanted to start the discussion.
`@Retention(RetentionPolicy.CLASS)`