Re-structured result format

In order to permit multiple differently shaped tables in the output, the
result format needs to be significantly different.
Enhanced complex field types

The SMILESListField now permits multiple entries without requiring a
file upload, and the float range styles work better across a variety of
browser sizes. Also migrated the code to Flask-WTF to take advantage of
CSRF and some slightly simpler code (we don't actually need CSRF given
the server is stateless, but just in case the future adds state it's
worth doing).