Callers can now pass StatusMessageHandler to pull method

This allows callers to define how they want to handle status 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.