Allow persistence layer to calculate marker.work_time

The ndb persistence layer has a created and updated property
because it must set marker's work_time to the difference. By storing
reference to the persisted entity in the marker, it can maintain the
created value.
Change context.start to check for tasks before handling them

I had it so the user target tasks could return a sub-Context without any
tasks and the Context at large would still get its completion callbacks called.
I did it by inserting a dummy task. I realize we could have processor check
for the returned context not having task, set the async result to None and
mark it as done. Async doesn't allow it's result to be changed outside of execution.
Currently the user code will need to be responsible for not returning empty Contexts.