Build script optimization

By not compiling assemblies where none of the input files, or the dll
dependencies had changed, the build takes less time.
Adjusted namespaces to be aligned with assembly
Updated Rakefile

Though the code is longer, the code that does the work is easier to read
as hashes are used to give the arguments meaning