halmodule: produce python exceptions instead of segfaults

.. in the case of incorrect use of most attributes of hal.component
instances after they've been exited via the .exit() method.
nml cleanup: IO never writes to the toolCmd channel

IO reads from the toolCmd channel but doesn't write to it, so remove
its write permissions from the NML file.
nml cleanup: the GUIs don't need access to the tool NML channels

The tool command channel 'toolCmd' and the tool status channel 'toolSts'
are only used between Task and IO.  The GUIs don't need access to them.
nml cleanup: make keystick identify itself as 'xemc'

keystick doesn't need its own NML access id, just use the 'xemc' id like
all the other UIs do.
rtai_ulapi: ensure that rtapi's internal data is unmapped when appropriate

this helps support cmorley's use case of having a single process which
lives through multiple realtime sessions, creating a realtime component
in each one.
halmodule: fix deallocation of hal objects

There's no guarantee that PyObject_Del is the right underlying
function to call; use the one from our type object instead.  Without
this, sometimes a crash was observed at shutdown.
compensate for lag due to servo period