Documentation.
Preserve func_dict of original function when using @deviceMethod.

This means the order won't matter when we introduce the httpAccessible
decorator shortly...
Add a modicum of security, require a special decorator for HTTP access.

Functions that don't have the @httpAccessible decorator won't be
available over the HTTP controller interface.
Add @httpAccessible decorations to the functions that need it.
Calling getVersion() over HTTP isn't currently supported.

We make all sorts of assumptions (like the function taking a device ID)
which aren't valid here.
Factor out common code.
Nobody should want to use withDevice any more.

Begone, evil stack manipulation!