Add non-pointer resource management class.

Sometimes we need some kind of RAII class for non-pointers types.
scoped_resource can be thought as boost::scoped_ptr for non-pointers
resources. The class modeling is inspired by the proposal made here:
http://www.andrewlsandoval.com/scope_exit/.
Make EGL resources RAII.

Use scoped_resource class for EGL automatic resources management.
Use a typedef for wayland smart pointers.

Prepare for more wayland protected objects.
Rename m_wl_display to m_display.
Add compositor and shell wayland objects.
Move wayland utilities to their own module.
Add generic functor EGL object deleter.
Use generic EGL object deleter.
Add registry listener.
Provide wayland and EGL object accessor methods for System class.
Use a non overloaded method for unspecified bool.

The compiler cannot deduce which member function pointer to get with no
additional information for an overloaded method reference.
Remove EGL context member.

Contexts should be tied to windows, so it makes no sense we have a
context in the system class.
Begining of Window class implementation (work in progress).
Implement methods to get and set window title.