Apply image changes 354

Fixes #353, #354 and #730 via the same code block. 

See my comment on #730: https://github.com/ClusterHQ/flocker/issues/730#issuecomment-58671211
in regards to deriving `Link` objects on `Application`s; all we have from `DockerClient` `Unit`s are environment variables, such as `POSTGRES_PORT_5432_TCP_PORT=50432` or something in that format. Therefore to apply changes to the `links` portion of an application configuration, the only way I can see to do it at the moment (assuming we're being selective about what gets restarted, which we currently are) is to do some pretty awful regex matching on those environment variables to extrapolate the original `Link`s. I'm not happy with this approach, but someone's going to have to give me a better idea if they want this to change.

Oh and #351 and/or #352 *might* be fixed by this branch, but if they are, it's a happy coincidence and work would certainly still need to be done on those issues at the very least in respect of tests.
More generally, this function is getting pretty complex and hard to understand. Please open issue to improve that.