Added Impersonate() calls to all public methods/properties that involve resource access, as calls might come from other threads
Reworked impersonation to check for current user account and impersonate only once if possible
Introduced own ImpersonationContext as wrapper for Identity and WindowsImpersonationContext