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 its 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.