Add Files For Composite Pattern

Adds files for my solution to the composite pattern anssignment.

Files:

 * composite/Expr.java: Stub class for mathematical expressions.
 * composite/Statement.java: Abstract superclass for the other
   statement types.
 * composite/Assignment.java: Class for assignment statements.
 * composite/Compound.java: Class for begin ... end blocks.
 * composite/Conditional.java: Class for if ... else ... end blocks.
 * composite/Main.java: Driver program.
 * composite/While: Class for while loops.
Change Compound Constructor

Change the constructor for Compound to accept zero or more Statements to match
the professor's intentions.

Changes:

 * Compound.java: Constructor takes zero or more arguments.
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.
Merge pull request #2 from heathharrelson/composite

Composite
Added bridge. Comments are welcome.
Added bridge, excl. bin
Merge branch 'master' of https://github.com/davidstocker/designpatterns
Initial Commit

Adding files for my Virtual Proxy presentation. Will use my TerminalIO utility class.

Added:

 * TerminalIO.java: Utility methods for curses-like ANSI terminal I/O.
Add Seeking and Reverse Video Mode

Adds the ability to seek to a particular row and column and the ability to print
text in "reverse video" mode (foreground and background colors reversed) to
TerminalIO.java.

Changes:

 * TerminalIO.java
Add Driver Program

Adds a driver program that prints a menu and gets user input.

Changes:

 * VirtualProxyTest.java
Rename Driver Program

Rename VirtualProxyTest.java to VirtualProxyDriver.java to make it clear it isn't
test cases.

Changes:

 * VirtualProxyTest.java -> VirtualProxyDriver.java
Complete VirtualProxyTest Rename

Rename the class in VirtualProxyDriver.java to VirtualProxyDriver to complete the
rename.

Changes:

 * VirtualProxyDriver.java
Refactor SeekTo Range Checks

Refactors the range checks in TerminalIO's seekTo method into a new method rather
than repeatedly using a ternary operator.

Changes:

 * TerminalIO.java
Add Comments to Driver

Adds a method comment to each method of the driver program.

Changes:

 * VirtualProxyDriver.java
Use Big-Endian Dates in Headers

Modifies file headers to use big-endian (YYYY-MM-DD) dates like my other files.

Changes:

 * TerminalIO.java
 * VirtualProxyDriver.java
Add ExpensiveObject and Its Interface

Add an ExpensiveObject class and an ExpensiveObjectIF interface that it will
share with the Virtual Proxy object.

Added:

 * ExpensiveObject.java
 * ExpensiveObjectIF.java
Change Whitespace in ExpensiveObject

Removes the blank line at the top of the class definition.

Changes:

 * ExpensiveObject.java
Add Virtual Proxy Class

Adds the ExpensiveObjectProxy class, which acts as a virtual proxy for an
ExpensiveObject. The ExpensiveObject is created lazily on first use, and
thereafter method calls are forwarded to it.

Added:

 * ExpensiveObjectProxy.java