User profiles

add public-facing user profiles. (fixes #26)

also does some severe refactoring of the frontend's interface w/ the rest api