BugFix : Use ChainableDefinitionSource sources

PHPFileDefinitionSource source is too specific. We should be able to use ChainableDefinitionSource sources.

If the parameter of addDefinitions method (in this builder) was a ChainableDefinitionSource object and not a PHPFileDefinitionSource object, the build process failed. This commit corrects that.

It now allows to use ChainableDefinitionSource in addDefinitions. For example, we can now load a config array from cache, create the ChainableDefinitionSource object and pass it instead of a file name.
Create a fixture for ArrayDefinitionSource
Add new test for adding ArrayDefinitionSources
Added a constructor to ArrayDefinitionSource

It's easier to use, especially in tests.
#216 Improved test