Concurrency fixes

Protect all access to RDotNet through RInterop using a lock on
RInit.engine. IDE stability issues, apparent parsing errors, and system
access errors are resolved by ensuring that the R environment through
RDotNet is accessed in a thread-safe manner.