Initial commit

Not commented, and doesn't work fully, since it was more of an experiment and the needs of the project changed shortly after I started this.  Lots of the code needs refinement as well.