Implementation of Find and Create<TDerivedEntity>, some clean-up

- Implemented `Find` with a property the client can use to provide an appropriate function (so you can choose not to create a new derived class).
- Implemented `Create<TDerivedEntity>` with `Activator.CreateInstance`.
- Removed `IsStaticMode` (I just check for non static data existence).
- `Data` property used for accessing the data no matter it is static or not, so most of the methods can be one-liners now.
- Some methods were using only the static data (`ElementType`, `Expression`, `Provider`) regardless of `IsStaticMode`. Now they use the aforementioned `Data` property.