prov/psm: support fi_cq_write

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: initialize cq wait object

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: define optimized version of tagged send/recv

Remove branches when the default EP op_flags is 0 and when the AV
type is known.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: use free list to optimize CQ event allocation

A set of macros are defined for general free list management:

	PSMX_FREE_LIST_INIT(head,tail,type,count)
	PSMX_FREE_LIST_GET(head,tail,type,item)
	PSMX_FREE_LIST_PUT(head,tail,type,item)
	PSMX_FREE_LIST_FINALIZE(head,tail,type)

The free list can be initialized with a certain size and is
expanded automatically when needed. Items are zero'ed when put
back to the list.

As the first example, CQ event allocation is moved from calling
calloc directly to allocating from the free list. The same usage
pattern can be applied to other resource allocation such as AM
request.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: add event suppression to tagged send/recv optimization

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: add debug output for tagged ops selection

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
Merge pull request #176 from j-xiong/master

prov/psm: cq_write, wait obj, optimized tsend/trecv and cq event allocation