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.