core: Add attrib_list param to func wcore_platform::window::create

This prepares for adding waffle_window_create2() to Waffle's public API,
which will have an attrib_list parameter.

No attributes are supported yet.  Therefore this patch validates, at the
top of each ${PLATFORM}_window_create(), that the attrib_list is empty.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
core: Add func wcore_attrib_list_copy()

This is useful for making a writable copy of a read-only attribute list.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
core Add func wcore_attrib_list_pop()

This is useful for removing attributes as they are parsed.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
waffle: Add public func waffle_window_create2()

Today, waffle_window() has only two parameters: width and height.

Frank Henigman wants to extend Waffle's GBM backend with the ability to
post window contents to the display. Multiple methods exist for posting
content to the screen with the drm API, and that method should be
configurable per waffle_window. Therefore, we need to be able to pass
additional attributes to waffle_window_create().

It would also be nice to specify at time of creation that the
waffle_window should be full screen. Again, we need to pass additional
attributes to waffle_window_create().

The new function waffle_window_create2() is conceptually equivalent to
the original waffle_window_create() with the addition of an attrib_list
parameter.  The only supported attributes are currently
WAFFLE_WINDOW_WIDTH and WAFFLE_WINDOW_HEIGHT.

See the manpage changes for more details.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
tests/gl_basic: Update to use waffle_window_create2()

Tested on GLX, X11/EGL, and Wayland.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
examples/gl_basic: Update to use waffle_window_create2()

Tested on GLX, X11/EGL, Wayland, and GBM.

Signed-off-by: Chad Versace <chad.versace@linux.intel.com>