Define "push" goal for plugin

Added new new mojo with goal "push-images" which by default binds to the
"install" phase.  Mojo accepts a list of image-ids to push. I opted out
of using the built ids shared between build, start & stop. This was
partly because the nameAndTag information from build was not being
retained, but also to allow greater control over which containers were
pushed e.g. allowing some containers to built and started for an it, but
not necessarily pushed. (If using both the "build" and "push" goals, it
is presumed that the images you want to push are "kept".)

A prereq enhancement here was to allow the mojos to accept docker
credentials (user, email, password) as config parameters. However, I
have only updated ImageService.push to actually use these credentials.

While I was here, I modified ImageDescriptor to be a bit more flexible
when reading images id, specifically adding support for port numbers and
hyphens ("-") in the registry-part.

As for testing, added a new it which exercises pushing and in that
loading and using credentials. The test is driven off new maven
properties:

- docker.userName
- docker.password
- docker.email
- docker.registry

I ran these (set from my personal .m2/settings.xml) pointing to both the
public docker hub and my private docker registry, with success. However,
because these configs are no good for the CI env or you, I have marked
the push goal skip=true for commit. 

Will happily update the doco if you grant approval to the design.
Mods to "Push" goal

From feedback from Wouter:

- modified push goal to reuse stored built image info and identified
which images to push by an additional property
- updated documentation

Main functional bits here:

- added <push>true/false</push> to BuildImageConfiguration
- updated BuiltImageInfo to retain name-and-tag + push
- stripped out <imageIds> from push mojo and instead made it look back
to built image info
- disables removal of images on stop (i.e. keep = false) if those images
were flagged for push

On the last bit, I tried to then remove those images after the push
instead, however, Docker gave me back 409-Conflict implying the push was
somewhat asynchronous and therefore some delay required for removal. For
now, am assuming all pushed images are implicitly "kept" which seems a
reasonable assumption. (Having pushed it, do you really want to pull it
again?)
minor documentation tweak
"un-refactoring" the removeImage logic
Merge pull request #13 from lcoote/master

Define "push" goal for plugin