Added mechanisms for formatting strings.

`%` now formats strings like `String.format(...)` in Java, taking one
string argument and one tuple argument. Also added `printf` which works
like `System.out.printf`, and also taking one string argument and one
tuple argument. This required the addition of a new method to the
abstract DataType base class, namely `getJavaAnalog()` which returns an
`Object` representing a DataType's Java analog, e.g. XiList's
`getJavaAnalog()` returns a java.util.List.