Simplify syntax and general cleanup

Instead of specifying a url and a url builder, allow the url to a be a
string or a function to accomplish the same end.

If a string is provided, just concat the base url to the completion
value. This case is quite common.

If a function is provided, it must produce a base-url with no args and a
complete url with one arg. This allows for a lot of flexibility.
Merge pull request #2 from steventlamb/topic/simplify_syntax

Simplify syntax and general cleanup
Factor out test utils
Add history library
Merge pull request #9 from steventlamb/topic/add_history_lib

Topic/add history lib
Update README.md
Add support for keeping intermediate values

fixes #8 on github
Merge pull request #10 from steventlamb/topic/keep_intermediate_values

Add support for keeping intermediate values
DRY out recipes
Merge pull request #11 from steventlamb/topic/demo

DRY out recipes