Specify Java source level and force encoding

Source level is needed on some platforms where it isn't
correctly automatically recognized.  Source encoding is
forced to get consistent build outputs on systems with
different source encodings.