Null-handling refactoring
- Remove unnecessary usages of null.
- Use Optional instead of null values where appropriate.
- Add comments to explain nulls with special meanings.
- Annotate fields and parameters that can be null with @CheckForNull.
- Validate constructor arguments with Preconditions.checkNotNull.

Further refactoring
- Add class to read time-shifts, previously handled by TimestampsReader.
- Varint.read reads directly from an InputStream, instead of needing a
  Varint.ByteReader.
Remove some usages of commons-lang
Simplify handling of a null StaplerRequest