Enable consistent builds by sharing common properties and targets

This is the first step to fix https://github.com/dotnet/buildtools/issues/18. Currently depending on how you build you get different build behaviors and binaries dropped into different locations. This change adds a dir.props and dir.targets at the top and bottom of every csproj file so they get a consistent set of properties and targets.

This change also cleans up build.proj a little to share some of the common properties and adds a way for projects to detect if the build tools are present or potentially outdated. 
I will move the BuildToolsVersion up to isolate it I don't think we need that for SkipTestAssemblies, I will have to figure out where I want to put that at.