Add mono build script (#70) with Travis CI and add config file

This add limited support for Travis CI. At the moment, we only build
the R Provider and do not run the tests. This is future work - we need
to figure out how to install R on Travis first.

The commit also includes some work on adding configuration file
(which is completed in a later commit).
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.
Resolve RDotNet and plugin assemblies when installed via NuGet

When RProvider is installed via NuGet, the RDotNet library will be located
in "../../RDotNet-1.5.5/lib/net40" and when Visual Studio loads RProvider.dll,
it fails to resolve this dependency. Previously, we tried to copy the dependencies
to the right place with PowerShell script, but this 1) does not work on Mono,
2) does not work with RestorePackages, 3) sometimes does not work for other random
reasons. Similar difficulties are with plugins - e.g. Deedle plugin will also be
in a separate directory.

This checkin modifies RProvider, so that it can work with NuGet. We setup the
AssemblyResolve event handler in the static constructor of RProvider and we let the
user configure resolution via RProvider.dll.config. The NuGet package includes a
default config that makes things work. To make this work, the "RProvider" type that
sets up the AssemblyResolve handler needs to be loaded *before* any type that
references RDotNet. This did not quite work - e.g. `CharacterInterceptor` type inherits
from a type in RDotNet and if it gets loaded first, we are too late. So, this also
splits the project into `RProvider.dll` and `RProvider.Runtime.dll`. The first one
has the provider (and configures AssemblyResolve), but it does not reference RDotNet
directly, which makes the whole thing work.

The interfaces implemented by plugins are now in `RProvider.Runtime.dll`, so plugins
need to be updated. I did this for Deedle and it works fine.
Merge pull request #81 from tpetricek/master

Resolve RDotNet and plugin assemblies when installed via NuGet.
Incorporates concurrency fixes
Perform R package discovery in a separate process

Add a client and server wrapper around RInterop for package discovery to
prevent VisualStudio from crashing if there are concurrency or other
errors related to accessing R through RDotNet.

Cleanup obsolete commented code.

Hardening stability and recovery of RInteropServer

The RInteropServer was still prone to crashes and was failing to recover
after a crash. These fixes prevent multiple threads from calling the
server at once and avoid an unnecessary R eval that was leading to
crashes under heavy concurrent load.

Add exe files to lookup assembly lookup

The RProvider.Runtime assembly is now an exe, so exe files need to be
included in the assembly resolution for libraries.
Merge latest BMC repo master, and create a branch to work on
Commit before (re?)merging BMC master.
Commit before (re?)merging BMC master.
Intermediary commit, getting the nuget dependencies on track
Merge remote-tracking branch 'bmc_master/master' into rdotnet_1.5.11

Conflicts:
	tests/Test.RProvider/packages.config
Create a new RProvider.Server project for exe

The RProvider.Server.exe will provide a remote proxy to an R session for
package discovery. This way, RProviderRuntime is a library, rather than
an exe, and there is a cleaner separation between the runtime and design
time components of the type provider.
Remove thread locking from RInterop

Thread safety should be the caller's responsibility. The type provider
is thread-safe as it calls through the RProvider.Server proxy which
performs its own locking to guarantee thread-safety.
Revert assembly resolution change

This change was only necessary if we were treating exe files as
libraries.
Get RProvider to compile against R.NET 1.5.11 and Rdn.Fs 0.1.4
Split type provider into run-time and design-time

There is now a design-time assembly for RProvider.
Remove comments from build script
Update year
Fix for running as a NuGet package

RProvider assembly isn't loaded when the DesignTime assembly is loaded
since it has no real dependencies on it. Also, the DesignTime assembly
needs to make sure that the AssemblyResolver that can find the RDotNet
assemblies is in place first, before anything else is done. This change
ensures that the AssemblyResolver is registered. Further, it places the
Configuration module strictly in the Runtime assembly which is
guaranteed to be loaded by both the RProvider and the DesignTime
assemblies. Always going through the same module ensures we can resolve
that module and retrieve the configuration for that module.
Merge RProvider.Server into RProvider.Runtime

We don't want to have too many assemblies. My original intent had been
to merge RProvider.Runtime into RProvider, but this introduced a
circular dependency through RProvider.DesignTime via the design time
type provider annotation.

This fixes NuGet packaging that wasn't quite right in the previous
commit and has been verified using the build results as a local NuGet
repository.
Separate R runtime from the server executable

We discussed this with @hmansell and this is probably the most reasonable setup.
The original code worked, but had an unfortunate consequence that the generated
code and the type provider referenced an assembly compiled as executable - which
is confusing. So, this splits the R provider into 4 assemblies - I'll add more
documentation in the next commit.
Add developer notes and refactor assembly resolution

This adds a single page to the documentation which explains how
the different parts of the project are structured and why. I also
updated the template (to match with F# Data, Deedle etc.) and updated
to the latest version of the tools.

I did one minor refactoring, which moves the duplicated code to
setup assembly resolution (and I unified the part that look for
already loaded assemblies and the part that searches NuGet folders)