NH-2888 - Add support to ICriteria to eager fetch lazy properties

Enables control for eager fetching of lazy properties for the root entity, one-to-one and many-to-one associations  when using `ICriteria` queries.  The new API is as follows:

`ICriteria.SetLazyPropertyFetchMode(LazyPropertyFetchMode mode)`
This affects the current ICriteria instance

`ICriteria.SetLazyPropertyFetchMode(string associationPath, LazyPropertyFetchMode mode)`
This affects the lazy loading of the specified associationPath (typically a one-to-one).

where mode is either 

* `Default` : Standard behaviour to lazy load properties
* `Select` : Eager fetch as part of the initial select (using naming conventions from other enums)

I chose an enum, as it allows more flexibility in expanding the features later, such as a `SelectAll` to eager fetch all one-to-one's that are not lazy loaded.

Unit tests have been created to verify behaviour under NH-2888.