whitespace fix
(cherry picked from commit 925c1c462aee9b1c91da2da9bb35e729c87aab93)
Use a hash-based approach for detecting changes in directory structures.

That way, we can get consistent results even when files not matching a pattern are added or removed. A change to the directory alone won't change the hash.
(cherry picked from commit 3a6eb572ed3a650f7382cf32bd79b5d490aeb0d7)
Re-use code we already got
(cherry picked from commit 7f8166bb33777e2cf0da11db67e10d691665cfa7)
Renamed the two currently available cache implementations
(cherry picked from commit 4f136d2e615f741928431792d8cecd42b5bc869d)
Added abstract base class for factories, plan to use it for a FrameworkBundle specific factory
(cherry picked from commit b6e31aea3dabd3c99a69857bc70d0102210838b6)
Intention revealing names
(cherry picked from commit aaf35d4aee0a045461127b8dc97e93482a8f7568)