Add field propagation from all inherited templates and refactor the way FakeDb works with fields

Two features:

* Ability to inherit fields (and standard values) from multiple templates
* Allowing Sitecore to do the leg work when it comes to reading standard values and as a result supporting `item.Fields["Name"].GetValue(false, false)` 

I have a few thoughts on where to take it next:
* Move "system" fields into a Standard Template and make all templates inherit it. This will look cleaner and even less "magic" from the `Db*` classes
* Like you (Sergey) suggested: move the things that happen to the `DbItem` when it's added to the `Db` into a pipeline. I only believe it belongs in the `DataStorage`, not the `Db`. This way the items created via ItemManager will also get the same treatment

I will be testing this on a few of our projects tomorrow and I am eager to learn how it works on yours. Do let me know.