Global setup for OpenCL context in tests

refs kylelutz/compute#9

device, context, and queue are initialized statically in `context_setup.hpp`.
With this change all tests are able to complete when an NVIDIA GPU is in
exclusive compute mode.

Side effect of the change:
Time for all tests to complete reduced from 15.71 to 13.03 sec Tesla C2075.
Rely on system::default_context() to hold static context

refs kylelutz/compute#9
Update README file

This replaces the README file with a new, improved README.md
file written in markdown which contains more infomation and a
simple example.
Add documentation for type-traits

This adds documentation for the type-traits.
Remove documentation for non-existent platform methods

This removes the documentation for the non-existent platforms()
and platform_count() methods in the platform class. These methods
have been moved to the system class and are documented there.
Add documentation for platform::get_extension_function_address()

This adds documentation for the get_extension_function_address()
method in the platform class.
Add documentation for platform::unload_compiler()

This adds documentation for the unload_compiler() method in
the platform class.
Add test for SAXPY

This adds a test for the SAXPY function.
Add clamp_range() algorithm

This adds a clamp_range() algorithm which clamps a range
of values between a low and high value. This is based on
the algorithm of the same name in Boost.Algorithm.
Using FindOpenCL module from VexCL

Changed CMakeLists.txt files in Boost.Compute to use the variables
defined by FindOpenCL.
Merge remote-tracking branch 'ddemidov/master'
Change clamp_range() test to use float

This changes the clamp_range() test to use float values instead
of int values. The OpenCL clamp() function is only defined for
float values and this test caused kernel compilation errors on
certain platforms.

Also updates the test to use the new global context.
Increase work-group size for copy() kernel

This increases the work-group size for the copy() kernel to be
up to 32 items based on the size of the input. This increases the
performance of copy() and related algorithms (e.g. transform()).
Don't auto-initialize values in vector

This changes the vector class to not auto-initialize values
when it is created or resized. This improves performance by
eliminating a call to fill(). If needed, user code can call
fill() explicitly on the newly allocated values.
Make pick_copy_work_group_size() inline

This makes the pick_copy_work_group_size() function inline.
Add default constructors to image2d and image3d

This adds default constructors to the image2d and image3d
classes which initialize them with null memory objects.
Fixing build issues under windows
Remove unused histogram() algorithm

This removes the unused histogram() algorithm.
Add transform_if() algorithm

This adds a new algorithm named transform_if() which applies
a given unary function to an input value only if it passes a
separate predicate function.
Add get<N>() function

This adds a get<N>() function which returns the n'th element
of an aggregate type (e.g. vector type, pair, tuple).

This unifies the functionality of, and replaces, the get_pair()
and vector_component() functions.