Move the storage ensuring logic from being split
across the engine and the storage layer and expose
only a single `ensure_atom` function that does
the work instead.
This also removes the access to the `ensure_task`
and `ensure_retry` methods as the internals of the
`ensure_atom` function is now the only location
that needs to use these two functions.
This reduces the need to do type specific atom
checks in the non-storage components (which we
want to reduce overall).
Breaking change: removes the public methods named
`ensure_task` and `ensure_retry` (which should not
be used externally anyway) from the storage object
and makes those internal/private methods instead.
Change-Id: I3a0f1f0dd777a1633b4937e16b50030275c84d1d