Add: Working set sizes for nodes. (+ bug fixes)

Working set sizes can now be specified for nodes. Consumer nodes
will consume the entire WSS of a producer node. Code adapted from
work by Namhoon Kim <namhoonk@cs.unc.edu>.
pgmrd: add working set cycling.

Added working set cycling feature. Cycling causes a producer
to cycle through N different working set allocations across
invocations. This mimics systems where producers write data
data to one of N pre-allocated buffers. This is seen in
multimedia applications, where there are N pre-allocated
frame buffers to handle all in-flight processing.

Note: Producers assume the buffers they write to have
already been consumed. That is, producers do not block
when all N buffers are 'full' with unconsumed data.
libpgm: Extend API for finding edges.

Added API to make finding edges easier:
* pgm_find_first_edge()
* pgm_find_out_edges()
* pgm_find_in_edges()

Also, if pgm_find_edge() is given a NULL pointer for the
edge name, the call is re-directed to pgm_find_first_edge().
git config: ignore pgmrt and pingpong executables
pgmrt: edge-centric working sets

This patch allows the user to attach working sets
(data arrays) to edges (edge-centric).  This replaces
the previous node-centric working sets.

One drawback to an edge-centric approach is that siblings
can no longer share a parent's data. However, PGM doesn't
express this anyhow. Thus, an edge-centric working set
model more closely resembles PGM.

Note: Working sets are still optional. Some edges may
merely represent precedence constraints, with no data
data shared between the nodes.