Encapsulated all database logic in BMInterface in try/catch blocks

Fixes #963 (I believe).

Chaos, let me know if this is what you were expecting.

http://jenkins.buttonweavers.com:8080/job/buttonmen-blackshadowshade/422/
Sorry, this crosses the line: you're taking a complex parameter provided by a player and joining it into a string outside of a try block, so if there is a bug which allows badly-formed data to get through which can't be joined into a string, the player will be an internal error, and we will have no record of the problem.