Removed set+unset of ad-hoc JDK environment.

Seems to fix issue #3.
Added JavaDecafException.

This will allow us to track those errors in Java Decaf preprocessing
that are currently disappearing silently.
Used an ID different from 1.
Caught JavaDecafException to show the error in preprocessing.
Added a FIXME for later.
Added a bit of rationality in the use of exceptions. No actual change of functionality.

- Methods isMethod() and processMethod() do not declare to throw
  Exception --- because they don't.

- Method convert() declares to throw only IOExceptions instead of
  top-hierarchy Exceptions: narrower more-precise declarations are
  better. The top-hierarchy exceptions this method used to throw are
  now FileNotFoundExceptions and IOExceptions ---no need to use any
  other more general type.
Updated .gitignore to ignore classes
Size of header is now calculated in real time instead of being a magic number.
Changed constant name for clarity.
Added some breaks to switch/case for correctness
and to prevent the usual case-override errors.
Fixes Issue #6.

If the token is of type FUNCTION but it is one of the classes of java.lang, it may be the return type of a method definition.
Rearranged switch cases alphabetically.
Added FIXME.
Added some pre-work to the FIXME.
Changed name of variable for clarity
Added some stub code to substitute primitive types for boxed types.
Added new method substituteToken() to encapsulate all repeated code doing it.
Used new method to substitute all primitive types for boxed types.
Used new method sustituteToken() to remove all that repeated code.
Transformed all primitive literals into boxed literals

i.e. a 13 becomes a (new Integer(13))