Add .gitattributes to avoid line-ending issues

When using Windows, the best option is to use auto line endings. This
means that git will checkout files using CR/LF and commit as LF.

When installing Git for Windows this is the default, but it's easy for
folks to accidentally override this setting. Thus, it's best to specify
an explicit default at the repository level as this overrules the user
configuration.
Expand .gitignore

We were missing comments and files related to Visual Studio's project
migration backups.
Move package localization to NuPkg helper class
Allow scenario class to take properties
Expose build warnings
Don't build dependencies when building inside the IDE

We don't want to build in case we're performing a design time build
as we are expected to not produce any assets.

We also don't want to build the references in cases where we build
inside the IDE. The reason is that Visual Studio already built our
dependencies. Doing it again can regress performance. However, the
real issue is that it impacts correctness as this can result in
building the same project simultaneously from different projects.

Most particularly on the correctness side, this shows up when VS is
doing a "rebuild". NuProj will end up causing multiple build breaks
being reported because it will re-delete outputs that VS just produced
and that other project references that are building in parallel now
expect to be there.

This fixes issue #13.
Fix incorrect usage File.OpenWrite()

The method OpenWrite() will open an existing file for writing which can
cause corruption if the new file is smaller than the existing file. The
correct usage is Create().
Fix whitespace and add some comments
Allow to specify which package to assert against
Expand existing tests to cover NuProj dependencies
Ensure that we don't package files coming from indirect dependencies

For example, consider this scenario:

  A.csproj => ANuGetPackage
  A.nuproj => A.csproj
  B.csproj => A.csproj
  B.nuproj => B.csproj, A.nuproj

B.nupkg should not contain assemblies from ANuGetPackage.

We're fixing this by injecting a target into Microsoft.Common.targets
that allows us to compute the closure of project references. We can
then use that to discover the closure of packages that come from NuGet
and are produced by NuProj projects.

This fixes issue #10.
Remove Input/Output specification from GenerateNuSpec

We always want to run this target; previously we made a fix to include
a fake input which results in always running it. We might as well just
remove the entire input/output specification and force the target to
always run.

In the end, it's the job of the GenerateNuSpec task to ensure it doesn't
change the timestamp if the file if the contents haven't been changed.

This also adds test for testing incremental build works as expected.

This should permanently fix #29.