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 suggest using a tag such as this, so that it is more copy/pastable between files without having to re-think the relative path calculation:

      <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />