Add summary support to invoke-streams

invoke-streams now returns a longer vector that includes the summary. A new
function, if-error, allows some action to be taken if the result of
invoke-streams is an error. if-error uses the promise returned by invoke-streams
rather than the summary to determine if the result is an error.
Add repl.clj to assist REPL interaction and store experimental code