Add isComposite Method

Adds a default implementation of isComposite() to the Statement class for derived
classes to override. By default, Statements are not composite.

Changes:

 * Statement.java: Add isComposite() method.
Fix Declaration of isComposite

Fixes the declaration of isComposite to actually declare a return type. D'oh!

Changes:

 * Statement.java: Add a return type to isComposite().
Deal With Semicolons

Deals with adding semicolons to compound statements. Statements in composite blocks
should be separated by semicolons, although it appears that composite sub-statements
are the exception.

Changes:

 * Assignment.java: Don't append a newline when pretty-printing. Let the enclosing
   statement handle it.
 * Compound.java: Override isComposite() and add semicolons to pretty-printed code
   where necessary.
 * While.java: Don't append a newline to the end of pretty-printed code. Let the
   enclosing statement handle it.
 * Main.java: Add a newline between the first and second example.