Initial code - CLCSSlow Done, CLCSFast milestone.

CLCSSlow.java seems to work perfectly, at least on the sample.in.

CLCCSFast.java appears to properly identify the initial path, and
calculate the limits U,D,L,R for the path, that match
the CS161_Path_Limits_Gold_Standard_Single spreadsheet.

- Judson
Cleanup previous commit.

- Judson
Solve initial boundaries.

Solves the initial boundaries, using the initial LCS search to
set the limits for path p_0, doing a complicated copy to
path p_m.

Next step is to implement SingleShortestPath.
Add SingleShortestPath

Add an implementation of SingleShortestPath, which finds
the shortest path p_mid between path numbers upper and lower,
and then updates the path limit values. Appears to work (more
details below).

Called from within a dummy function for FindShortestPaths, that
currently does not do the recursion, but it does call
SingleShortestPath once, to do one path at p_{m/2}.

The one path seems to work correctly for the case
A=abcde, B=abcde

- Judson
Fix table range edges. Add DEBUG constants.

Fixed an issue with the table range edges, caused by not having
valid data above or to the left of the table range. In the
square problem, we fill with zeros along these edges, and now
the code fills zeros along the limiting left and upper edge
efficiently. Wasn't an issue with negative sentinels in the
table, but once those were removed for speed, problems came up
quickly.

Also add DEBUG constants to turn on and off certain features, such
as sentinels and printing features. These should compile completely
out when false.

- Judson
Fixes: Bottom corner start, and Aext vs A

The first fix corrects an issue where the backward path traversal was
not starting in the lower right most corner of the valid table
entries every time, becaues there are 2 different boundary conditions,
the m-wide band boundary, and the lower path limit boundary.

The second fix was needed when comparing A and B chars in the lower
half of the table, indexing into A instead of Aext.

- Judson
Complete, but broken, implementation.

Present issue appears to be that when the upper and lower boundaries
are the same, there is no room for the table to propogate, so I need
to ensure the U,D,L,R constraints of a path allow for unit width
when the path is horizontal or vertical (diagonal is OK).

Fails on sample.in test #2.
Works with all official examples.

Major change is that the entire backwards-reconstructed path
found in each subproblem is included in the U,D,L,R limits implied
by the path, such that if 2 subproblems fall the same subpath,
any problem between them will have at least 1 unit wide of table
path that will carve along the border, rather than get squeezed
out. Examples paths and U,D,L,R limits for them are given in new
spreadsheet CS161_Path_Limits_Gold_Standard_Single_01.

There are several other minor fixes and debug code changed, mainly
dealing with using Aext instead of A, or the wrong size array
for the limits.
Merge pull request #1 from JudsonWilson/master

Works with all official examples.