reorganized code structure. added random partition.

I reorganized the code a bit and added random partitions.

Partitioning schemes are now under the directory called "covers". There's still a bit of redundancy in the code, but the idea is that we can just add a bunch of partitions / covers to this directory and combine them with simple or general consensus.

The simple/general consensus have been put into a "consensus" folder. The splitters are constructed by calling the two functions:

    make_GC_split
    make_SC_split

So, for instance, if you wanted to create a general consensus problem with a random partition, you would invoke

    make_GC_split(random.cover)

to create the function that you use to split prox operators.

Also, I made `global_index` a part of SCProx as well; it just returns numpy.arange(self.n). This allowed me to put the ADMM code into a separate module (`admm.py`) so we don't have to keep rewriting it.

Adapting the tests to the primal-dual form should now just be a matter of changing some of the underlying code, `socp_to_R`, I believe.