Callers can now pass ProgressMessageHandler to pull method

This allows callers to define how they want to handle progress messages
received from docker during the pull. If the caller does not provide
a handler, a default one will be used which logs each message.