prov/psm: set funcptr to NULL for unsupported optional functions

This is required by the FI_CHECK_OP macro. Non-optional functions
continue to use the return value -ENOSYS to indicate unsupported
status.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: decouple domain creation from ep_cap

Some domain features are optional. Their settings depend on the
capabilities of the endpoints being opened. This patch allows
these optional features be turned on incrementallys, at the
time of endpoint opening.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: prevent the creation of EPs with resource confliction

Due to the limitation of PSM, all EPs share a single PSM endpoint
and PSM message queue. Two EPs exposing the same communication
interface would have confliction when accessing the shared PSM
resource. For example, we can't prevent a tagged message meant
to sent to one EP from being received by another instead.

To ensure correctness, we allow multiple EPs only if they don't
expose overlapping communication interface. For example, it is
allowed to have one EP for tagged messaging, another EP for
regular message queue, and yet another EP for RMA and atomics.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
prov/psm: remove the global psmx_ep_cap that is no longer used

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

prov/psm: cleanup after the domain attr change; multiple EPs; FI_CHECK_OP support