Use Runnable for callback instead of AbstractAction
Callback<Void> was also considered, but turned down due to having to have an unused return value

Refs #102 @ 30m
Expose error codes

Closes #118 @ 30m