Implemented push

Made several classes used for image pull more generic so they could be
used for push as well. For example, ImagePull has been renamed to
ImageTransfer.
This is a breaking change. Can we have separate ImagePullFailedException and ImagePushFailedException classes?