Text tool

#74 with these changes:

* Icon image commit snipped out, replaced by one I made
* Enter text in a text field instead of a modal dialog
* Fix `fromJSON`; it's a classmethod and needs the `@` prefix

Thanks again to @ksornberger for writing this.