EZP-21213: Base implementation of events in ImageStorage
EZP-21213: First working milestone
EZP-21213: review remarks
EZP-21213: removed ImageStorage::getFieldPath()
EZP-21213: Fixed Images/LegacyPathGeneratorTest
EZP-21213: Fixed setting  name in service.ini
EZP-21213: Fixed ImageIntegrationTest
EZP-21213: Added test for LegacyPathGenerator::isPathForDraft()
EZP-21213: trying to make Travis happier
EZP-21213: Fixed Image FieldType integration tests

This required disabling the file_exists() test that is done on
created data: the base integration test wipes database data
between every test, and filesystem data before and after each
test class.

This is globally fine, except that for images, it happens that
since with some databases (e.g. not MySQL), the autoincrement
counter is reinitialized when the tables are empties. The
consequence is that IDs are reused for Field and Version, and
we end up with the same filename.

This was fine with without this branch, since storeFieldData()
will re-use a file with the same path. But the publish event
handler won't, and shouldn't.

Images should not be re-used because the generated path is
identical, but only when a Field is provided with existing data.
EZP-21213: forgotten stashed changes from last commit
EZP-21213: Disabled file_exists tests
EZP-21213: Added integration tests on image path

ImageIntegrationTest will now validate the path assigned by
the API to image files.

To achieve this, a new series of tests is added that validate
data after publishing using a dedicated assert method:
assertPublishedFieldDataLoadedCorrect
EZP-21213: documentation

[ci skip]
EZP-21213: Fixed check for published image path. Should fail.
EZP-21213: Moved FieldStorageEvent triggering to ContentService

Since nodes are updated from ContentService::publishVersion()
*after* ContentHandler::publish() has been called, the PostPublish
FieldStorageEvent can not be called by the ContentHandler.

This commit moves it to the ContentService, and adds a sendFieldStorageEvent()
method to the ContentHandler().

It also updates the chain call by making sure the ContentHandler method
only fetches the content from the database if an event has updated it.
EZP-21213: Fixed LegacyPathGenerator test
EZP-21213: Fixed API ImageIntegrationTest

Test content is created without a Location. This
patch makes sure we don't have a double slash
in the image path.

How images in Content without a Location should
be named might have to be specified.
EZP-21213: Made sure published image is stored once
EZP-21213: Fixed slash usage in image nodePathString

Due to EZP-21861, the nodePathString used to generate the path
to published images may contain an unwanted leading /, leading
to double slashes in the path.