Added possibility to wrap existing memory buffers from host or CUDA within a viennacl::vector<>
Improved/corrected documentation of CUDA and host buffer wrapping tutorials.
Fixed and improved custom OpenCL memory buffer wrapping.

Now vectors can also deal with offset and strides within the provided buffer.
Silenced warning about unreachable code.
Skeleton for C-interface ready. Currently only provides xSWAP

The intention is to provide a libviennacl.so (and a DLL on Windows)
so that the host-interface, CUDA, and OpenCL kernels are made available
to languages other than C++. The interface is BLAS-like, giving access to
either of the three backends. In addition, an object-oriented
backend-agnostic version of the BLAS functions is also provided.

Currently requires CUDA and OpenCL to be enabled. This is a leftover
from some fight involving CUDA, CMake, and myself. Will be rectified later.
Add comments and clean up code
Fixed build system for shared library. Now builds with and without {CUDA, OpenCL} work well.
Resolved erroneous assert() for block ILU when encountering an empty last column.
Handle MEMORY_NOT_INITIALIZED in various switch-cases, and throw an informative exception
various clean-ups; add memory exceptions; re-disable tests
Add a memory_exception to replace the use of char* in the context of memory errors, and fix up tabs and spacing
Merge remote-tracking branch 'upstream/master' into pyviennacl

Conflicts:
	CMakeLists.txt