ParaPhrase/skel — pull request #3 by mpmiszczyk (2013-09-05 12:18:39+00:00)
Title: New interface for Skel workflows

This approach uses proplist in favor of counted tuples. All changes amin to increase readability, extensibility and ensure wright error messages.

## Changes
Orginal interface:
```erlang
skel:do( [{ map,
[ {farm ,
[ fun (X) -> X*3 end ],
4 }],
fun erlang:tuple_to_list/1,
fun erlang:list_to_tuple/1 }] ,
[ {0,1,2},
{3,4,5} ] ).
```
Proposed interface:
```erlang
skel:do( [{ map,
[ { do, [{farm ,[ {do, fun (X) -> X*3 end },
{workers, 4}] }]},
{ decomp, fun erlang:tuple_to_list/1},
{ recomp, fun erlang:list_to_tuple/1}] }],
[ {0,1,2},
{3,4,5} ] ).
```

### Increased readability

In more complex skeleton all parameters parameters are tagged with property atom. It allows easier recognition of any given part, and reduces errors related to wrong order inside skeleton tuple.

### Extensibility

Proplist allow adding additional or not mandatory properties to skeletons without any changes to the interface and code already using Skel.

### Moved pattern matching to the skeleton modules

All proplists are processed by appropriate modules. This gives a better error messages for missing, wrong or misspelled parameters. In addition this simplifies the process of modifying given skeletons by reducing all changes to only one module.