sm: add shared memory stubs
sm: flesh out header file

Message type, enums, and structs
Based mostly on the TCP transport
sm: start working on init
sm: define URI's with and without path
sm: complete init()

Check for config args, set reasonable defaults
Add to global array
Cleanup as needed
sm: set device path to include pid

Also, change the default to /tmp/cci/sm
sm: implement finalize
sm: implement strerror
sm: Only allow absolute path in URIs

since we have to connect to them.
Also, change the default to /var/run/cci/sm.
sm: manage endpoint ids
sm: begin implementing create_endpoint
sm: return status in connect reply

0 for success, else errno
Harmonize RMA write bits
Merge branches 'master' and 'topic/shmem' into topic/shmem
sm: minor changes to header
sm: make FIFO headers 8-bytes

to hold connection id, etc.

FIFO will hold MSG/RMA headers only. The sender places the payload in
its own MMAP buffer (one for MSGs and optionally one for RMA if no knem
or CMA). The RMA MMAP buffer will hold parts of the RMA op in the first
cacheline and the payload starts at the next cacheline.

Add the design.txt with the description of what we intend to do.
sm: declare types

Declare the struct types before use.
Store the cache line offset rather than void * in the tx.
Use the EVENT_RECV's pointer for the data rather than have
a copy in the rx.
sm: set rate and use mss keyword

Set the rate to 64 Gb/s for now.
Because we will send the header separately, we can directly set mss
instead of mtu - header length.
sm: create path for device

Adds sm_create_path() and sm_check_path(). Checks each parent
directory for existance. If not, create. If exists, check permissions.
sm: warn if mss is not power of two

Leave it alone for now.
sm: create endpoint's directory

and strdup() it to ep->uri.
Some trivial cleanup on destroy)endpoint().