[C#] Allow passing various options when creating singleton Environment object. (#14723)
### Description
Re-work OrtEnv class so we can pass various options when creating the
environment such as:
- logId
- initial logging level
- thread options
- user supplied logging function
Create the default instance when SessionOptions are instantiated as
users often forget to do so.
### Motivation and Context
We lack this capability.
Inspired by
https://github.com/microsoft/onnxruntime/pull/13822
https://github.com/microsoft/onnxruntime/pull/13951
https://github.com/microsoft/onnxruntime/pull/11593
Cc: @thoron
---------
Co-authored-by: Edward Chen <18449977+edgchen1@users.noreply.github.com>