* [feature] First version of the new fully generic layer system for libxively

Below is the list commits that were squashed:
    * [feature] [experimental] Added initial version of on demand processing architecture.
    * [refac] Changed the names of layers references names
    * [refac] Updated the main file to use the new layer names
    * [fix] Added missing changes to the previous refactorization
    * [feature] Added user data field to store needed information
    * [feature] Added posix io layer prototype
    * [refac] tabs->spaces
    * [fix] Added missing method calls
    * [feature] Added layer configuration for future use
    * [refac] Removed unneded casting
    * Added tests for all layer interface methods
    * cleaning, formatting etc.
    * [build] Added experimental to the build system
    * [build] Added debug flag whenever the build ment to be debug
    * [feature] Added debug information to the layer in debug builds
    * This will allow us to easly track the origin of the layer and to improve the
    * debug capabilities of the system.
    * [fix] fixed debug info data initialization
    * [fix] Unused variables warning
    * [feature] [build] Added unit test workspace for experimental layer
    * [refac] refactorized the core functions of the layer system
    * [fix] problem with one wrong layer name
    * [fix] removed the probability of undefined behaviour
    * This is related to the strict aliasing, C std doens't guarante that the structure type casted on different structure type will work, so I've decided to remove unneded 'mid' type and use only one generic type do describe layers.
    * [refac] moved the layer state return type to the other file
    * [feat] added the layer posix dummy version
    * [feat] added layer generic factory implementation
    * [fix] added the function like call style to factory macros
    * [fix] fixed the name of the assert include
    * [misc] removed unneded macros
    * [misc] cleaned the unused warning
    * [feat] added layer connector prototype
    * [fix] added missing header file
    * [refac] House cleaning
    * mainly moved things around, separation of typedefs for easier inlusion
    * maked layers to be smaller in terms of the memory
    * layers created via factory faster
    * [warnings] fixed compiler warnings
    * [feat] added types configuration and factory implementation that works with it
    * [feat] factory intialization can pass settings through void*
    * [refac] splited functionality into multiple functions
    * [refac] space sanity
    * [refac] changed the calling convention to be more generic
    * [refac] added *layer* infix
    * [refac] final factory and configuration modifications
[feature] first working example of the communication layer
[feature] added first dummy version of the http layer
[tweak] tweaking test implementation
[feat] added impulse layer parameter to add different behaviour for layers

This change allow layers to trigger different behaviour patterns depened on that
parameter, this is totally optionall so the layer does not need to use it at all
it may be helpfull for layers that will implement different behaviour patterns
like encoding/decoding different queries, the different in queries can be expressed
using that parameter
[feature] added not ready state that may happen then async approach used

In addition added states descriptions
[refac] made the layers to accept more generic void* parameter
[feature] added variants to the layer declaration
[feat] draft of the http layer implementation