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 decided to keep them in each of the csproj files, as I have some memories of that causing issues with proper VS usage, similar to having the config sections needing to be in each project. If we find they aren't needed for nice usage in VS I'm fine removing them at some point.