Create design skeleton

A /bunch/ of new files for this commit.  See the class headers for
detailed descriptions (JavaDoc).  More will likely be added, but I
believe this is the organizational pattern we're sticking with (barring
horrible mistakes that @dogmelons will undoubtedly point out).