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. 
Do I really need to do this when building from VS? If so, that's unfortunate. I think we can fix it by 1) using built tools in place from the packages/ folder, 2) having an appropriate entry in a packages.co nfigs to let VS package restore grab them for us.