Current system:
	- Shell::doOp
		initAck
		op.send
		while isAckPending {
			clearQ
		}
- set
		SetGet<type>::set(const Eref& dest, const string& field, A arg)
		checkSet
		type conversions into a temp char* buffer
		Shell::dispatchSet
			Puts stuff into a prepacked buffer
		Shell::innerDispatchSet
		requestSet.send() to the target shell.
		..........................................................
		Shell::handleSet on target shell
			Checks if prepacked buffer is single arg or vec
			if single: 
				create AssignmentMsg and tie to target
				lowLevelSetGet.send() data from node 0 only.
		..........................................................
		AssignmentMsg::exec (on all nodes and all threads)
			Checks direction
			extract prepacked buffer from arg
			Checks isDataHere and p->execThread to see if to operate
				executes op func.
				If thread 0, sends back ack.
		backward direction is similar, but does not send ack.
		..........................................................

- setVec
		SetGet< type >::setVec( const Eref& dest, const string& field,
			const vector< A >& arg )
		checkSet
		type conversions into a prepacked buffer
		Shell::dispatchSetVec
			Stuff is already in prepacked buffer
		Shell::innerDispatchSet // Note that this also deals with set.
		requestSet.send() to the target shell.
		..........................................................
		Shell::handleSet on target shell
			Checks if prepacked buffer is single arg or vec
			if vec:
				create AssignVecMsg and tie to target
				lowLevelSetGet.send() data from node 0 only.
		..........................................................
		AssignVecMsg::exec (on all nodes and all threads)
			Checks direction
			extracts prepacked buffer from char* arg
			Finds opFunc
			DataHandler::iterator to go through all objects 
				Checks p->execThread to see if to operate
					executes op func.
			If thread 0, sends back ack.
		backward direction is a single msg and looks OK, but no ack
		..........................................................

- get
	Field< type >::get (derived from SetGet1< type > )
		Shell::dispatchGet (Blocking call).
			Find field, type checks.
			Find appropriate GetOpFunc and pass its fid
			innerDispatchGet(sheller, tgt, fid)
			initAck
			requestGet.send
			while isAckPending
				clearQ
		When data comes back into Shell::getBuf_ the isAckPending 
		clears. 
	Then, from within Field< Type >::get continue with:
		take ptr to returned getBuf
		Convert it 
		return converted value.
		..........................................................
			Shell::handleGet
			make new AssignmentMsg and tie to target
			lowLevelGet.send
		..........................................................
		AssignmentMsg::exec (on all nodes and all threads)
			Checks direction
			Checks isDataHere and p->execThread to see if to operate
				executes GetOp func.
				If thread 0, sends back ack.
		backward direction is similar, but does not send ack.
		..........................................................
		GetOpFunc::op ( defined as a template in OpFunc.h and friends)
			Gets data from object
			Converts to buffer
			fieldOp on buffer (from OpFunc.cpp)
				Puts data into prepacked buffer
				Finds incoming Msg
				Synthesizes return Qinfo
				Adds return to Q going to shell
		..........................................................
		Shell::recvGet( PrepackedBuffer pb)
			Called with the return value put into the Q by GetOpFunc
			Sets Shell::getBuf_ size for return value
			copy return value from PrepackedBuffer into 
				Shell::getBuf_
		..........................................................
		handleAck: Adds another to the returned acks
		Eventually all the acks are back and isAckPending clears
		innerDispatchGet returns the getBuf
		..........................................................

- getVec:
	Almost identical to get, and uses most of the same functions. Only
	difference is that the handleGet sets up AssignVecMsg instead;
	and the returned arguments are placed by index into the return
	vector in recvGet.

