rework TypePolicy, add javadoc, remove unused code and support for Currency (because its too obscure and can be added manually)
rename toString to print, so name doesn't confusingly collide with method on Object