Fixed indentation in s3_utils
Removed main() in s3_utils
Organized some components and separated out JobConfig from the mapreduce.go file. Introduced accessor interfaces and TaskState.
Merge branch 'dghubble-dev' into tgarv-dev

Conflicts:
	s3_utils.go
Removed mapred.go dependency on S3, including removing all S3 imports in that file. Created an InputAccessor interface that hides the S3 details from the rest of the system.
Merged with tgarv-dev.
Started work on the TaskManager and made some changes in the creating the MapTasks.
TaskManager stores the TaskState information about which node index is assigned each Task to handle failure scenarios later. Creation and assignment of MapTasks is working with the Task Manager and the makeMapTasks helper.
Added Pings from lab 2 (viewmaster) so that nodes can keep track of which other nodes are alive. Haven't figured out how to write tests for it yet.
Interface for distributing general tasks seems to be working. Still need to change the Mapper and Reducer interfaces in a way that wraps the InputAccessor and OutputAccess so that workers do read/writes rather than the master.
Paid more attention to atomicity and locking the TaskManager, improved the generality of listTasks and countTasks. Tasks are now either unassigned, assigned(i.e. worker has ack'd that it will do the work), and completed.
Encoding problems transferring the S3Accessor across inside the MapTask. s3.bucket not registered.
Removed bucket as a field of S3Accessor since encoding was failing. S3Accessor now fetches a bucket each time it has to do a GetValue or ListKeys.
Added Pings from lab 2 (viewmaster) so that nodes can keep track of which other nodes are alive. Haven't figured out how to write tests for it yet.
Merge branch 'tgarv-dev' of github.com:dghubble/gomapreduce into tgarv-dev

Conflicts:
	mapreduce.go
Added simple IntermediateAccessor (terrible name) whose emit method gets called for each intermediate key/value pair.
Added some constructors and exported so that default components are usable from the client.
Registered PingArgs and PingReply and added MakeMapReduceNode constructor.
Tasks now have a completed method which is called after the task is executed. Successfully notifies the master node that the Task completed. Continues trying until acknowledged.
Working on IntermediateAccessor. Added a key/value store to hold the emitted values. Changed it so that each node has its own IntermediateAccessor, with values keyed by job ID.