NOTE: Actions always set the Agent's least recently used connction (getConnectionLRU()) which is somewhat ugly for actions affecting multiple connections - we should probably return a set of affected connections if we ever have actions that change more than one (other than clustering which doesn't really change anything)
The subclass create(PyObject *) functions check if the PyObject matches and return a new instace if it does, or 0 otherwise (or throw an exception if the name matches but the parameters don't)