Start splitting the declaration and the implementation of SYCL classes

This way, the documentation of the SYCL API itself will be able to be
generated by Doxygen or some other tools from this project
Move the "range" implementation to implementation/sycl-implementation.hpp

Add also a new "trisycl" namespace to hide the implementation.
Restrict "range" constructors to the current SYCL specification

Reuse same notation as in specification to better track changes.
Move the "nd_range" implementation to implementation/sycl-implementation.hpp
Move item, id and group to implementation/sycl-implementation.hpp
Move buffer and accessor to implementation/sycl-implementation.hpp
Split id implementation from interface

Improve range implementation too.
Split parallel_for() into interface and implementation

Also improve id implementation & interface.
Add range(x,..,z) constructors
Improve nd_range definition to have all the examples to compile
Add group and parallel_for_workgroup implementation
Add a small debug template class to help tracing constructors/destructors
Test debug mode to fix a nd_range constructor issue around offset

The default 0 offset was always of dimension 3...
Use default constructor offset which is initialized to 0 anyway.
Add "id" constructor from its implementation to have "item" methods working