Adding parallel and distributed file system interface

This adds in the user facing interface for exposing parallelism in a parallel/distributed file system in a meaningful way to the user. It also adds in the runtime bindings and the plumbing for Lustre and other such parallel and distributed file systems and implements it for the HDFS plugin.

@mppf said he would review.

[Note: This is a revised pull request that fixes whitespace changes]
Am I understanding correctly that this function is filtering out the hosts to ones in the running job (ie hosts that are locales)? It seems with the current locales-for-range interface, you could just return hostnames for things not in the current job and the QIO/IO.chpl layers would handle that. I'm OK with this commit leaving it this way though.