Added a page to display buttons and sets

Resolves #912

http://jenkins.buttonweavers.com:8080/job/buttonmen-AdmiralJota/342/

This also involved tweaking the python client a bit, so that should be tested too.
Hmm, this is odd: how come you only set Env.message if it's null.  Could it be not null, but also not describing the internal error?