Migrate to CMake for builds.
Fix regression introduced by c59c148.

FATBIN_FLAG_COMPRESS is unavailable prior to CUDA 5.0.
Fix regression introduced by 9c36c18.

Prior to CUDA 5, the texture methods accepted a const char * as their
argument.  Passing a const void * (as 9c36c18 does) requires an explicit
cast when building against CUDA 4.2 headers.
Fix typo for pre-CUDA 5 builds introduced by c59c148.
Fix regression introduced by 64afb1d.

cudaErrorPeerAccessUnsupported was not introduced in the CUDA headers
until CUDA 5, so it must be preprocessed out when building against
earlier versions of CUDA.
Restore control test to the build.
Formalize use of the launcher script with a target.
Add Panoptes launcher binary.

As to simplify using Panoptes, this commit adds a small launcher which
injects libpanoptes.so into the LD_PRELOAD environment variable.

Additionally, the launcher adds PANOPTES_TOOL=MEMCHECK to the
environment.  In the future, other tools will be supported via the same
libpanoptes.so interposition library.  This flag will allow these tools
to be selectable at runtime.

Sample usage:
    panoptes [--tool=memcheck] my_cuda_program [args]...
Add hidden --library hook to the Panoptes launcher.

This eliminates the need for the src/tests/launcher shell script.
Integrate (optional) usage of PANOPTES_TOOL introduced by a144cfc.
Update README with future work section.
CUDA 5 does not segfault when trying to record destroyed events.
Use $<TARGET_FILE:...> for consistency.
Allow large chunks to be rebound without an intervening deallocation.

This code originally scanned the list of chunks it was considering
merging during a cudaBindTexture call to validate that none were part of
a large chunk (a contiguously-allocated region of memory for validity
data).  If we unbind the texture, the large chunk is not immediately
freed.  In fact, we only deallocate the block when the actual allocation
is freed.

Rebinding this texture without an intervening free/malloc of the target
device pointer caused this logic to reject the validity chunks, even
though no further manipulation (such as performing a second merge, etc.)
was necessary.

This change allows large chunks sharing the same owner (the same base
offset) to be rebound without hitting this implementation limit.
Add cudaBindTexture2D support.
Add tld4 instruction support.
Use cuToCUDA in more places.
Fix up .gitignore.
Suppress asynchronously reported errors.
Simplify structure of cudaGetTextureAlignmentOffset test case.