Added SharedArray

Note: This was originally `RFC : WIP on adding shmem support to DArrays`. Has evolved considerably and finally it was decided to implement `SharedArray` as a separate type.



- Inspired by Tim Holy's SharedArrays PR.

- The idea here is to add shmem support to DArrays, where shmem is used if possible. If not, it will default to current darray behaviour. So users can write code requesting DArrays with shmem=true, and it will work even in situations where shmem is not possible, albeit slower. 

- new kw args `shmem=false`, `safe_r=false`, `safe_w=true` in the DArray constructors. 

- If the user is on Windows or if the requested procs() are not all on the same host, `shmem` will not be used.

- If `shmem=true` and  `safe_r=true` then for all practical purposes, performance will be similar to existing DArray since requests will be remotely fulfilled  via a remotecall into the process holding the relevant chunk.

TODO:

- `setindex` for DArray in general

- tests for DArray / DArray with shmem

Would like feedback whether we should go down this path, or keep shmem support distinct like Tim's SharedArrays or do both.