fix proper cancellation

	modified:   managers.py
	modified:   workqueue.py
add workflow restarting

	modified:   yerba/base.py
	modified:   yerba/managers.py
Add workflow cleanup on startup

	modified:   base.py
	modified:   db.py
	modified:   managers.py
update completed time when a job is stopped

	modified:   yerba/db.py
update README and add header file to package

	modified:   README.md
	modified:   yerba/__init__.py
add command line interface

The engine can now be monitored and managed using a command line
interface.

	modified:   bin/yerba
update submitted and completed times

Reset the jobs completed time and submitted time if the job is
restarted. When the job is cancelled set its completed time.

	modified:   yerba/db.py
	modified:   yerba/managers.py
remove verbose error checks from logging functions

	modified:   yerba/workflow.py
fix bug in json encoding task output

Task now returns a repr of the tasks output. A response that fails to
encode properly will still respond with an invalid json message.

	modified:   base.py
	modified:   workqueue.py
The queue pass not handle scheduling and state

The queue only delegates work to workers and returns results to
managers.

	modified:   yerba/managers.py
	modified:   yerba/workqueue.py
add event notifier to decouple events

	modified:   yerba/base.py
	modified:   yerba/core.py
	modified:   yerba/managers.py
	modified:   yerba/workqueue.py
Move state management into workflows

A workflow now provides an interface to the state of a workflow. The
manager now only manages workflows and not the state of its jobs.

	modified:   yerba/managers.py
	modified:   yerba/workflow.py
cleanup dead code

Remove unused code paths and helpers

	modified:   yerba/managers.py
	modified:   yerba/workflow.py
	modified:   yerba/workqueue.py
create factor methods for Job and Workflow

	modified:   yerba/managers.py
	modified:   yerba/workflow.py
try to create directory or ignore errors

Attempts to create a directory to the log otherwise it ignores any
error.

	modified:   yerba/workflow.py
add file encoding

	modified:   yerba/__init__.py
	modified:   yerba/base.py
	modified:   yerba/core.py
	modified:   yerba/db.py
	modified:   yerba/managers.py
	modified:   yerba/routes.py
	modified:   yerba/services.py
	modified:   yerba/utils.py
	modified:   yerba/workflow.py
	modified:   yerba/workqueue.py
update jobs in the running state

	modified:   yerba/workflow.py
Fix issue where workflow remains in Running state

When a workflow has a task to be skipped for the last step following
a running task the running task updates the workflow to Running and
then the skipped task is not scheduled and the workflow is not properly
updated to completed.

	modified:   yerba/managers.py
	modified:   yerba/workflow.py
skip fetching tasks if in completed state

	modified:   yerba/workflow.py
add access log support

	modified:   bin/yerbad
	modified:   yerba/base.py