first re-attempt at custom typewriter imports

lots of stuff, including use of cli package; gen get; gen custom
get main in there; basic cli UI
inline 'write', only used once
one less file read for parser; be sure to close it
rename Write to WriteBody, breaking change but clearer
let's use pointers for typewriter implementations
custom gen should not run in the context of the temp dir, duh; a little whitespace tightening of output
better place for that defer
use const for _gen.go file name
test custom
one more const
new typewriter.ImportSpec, to include both Path and optional Name

test fixes & comments
comment typo
integrate changes to List from https://code.google.com/p/go/source/detail?spec=svn2adfffbb15deac6c575f24c9d6e31eb694baf93f&r=2adfffbb15deac6c575f24c9d6e31eb694baf93f
return errors on run(); bubble up to main()
return errors on custom()
return errors on get()
absence of types considered an err (really an fyi); update tests and fix busted ones
foowriter for testing
test run()