Compile hybris.so with -fPIC

Shared objects should use position independent code.
Add support for hammerhead style sysfs rgb led controls

The led controls in hammerhead sysfs are sufficiently different from
the currently supported ones that it did not fit in to the pre-existing
sysfs abstraction layer.

New abstraction layer should make it more likely that new devices that
still follow lights interface from anrdroid hw library can be supported.

[hybris.so] Add support for hammerhead style sysfs rgb led controls. Fixes JB#21744
Add NULL pointer checks to led sysfs file open & close helpers

Also emit a warning if file exists but can't be opened.
Do not include half of directory name in led prefix constant

Now prefix is actually existing directory and the concatenated
part does not hide initial part of the file. Which should make
it more likely that relevant strings are found by grepping the
source code.
Replace custom numof() macro with equivalent G_N_ELEMENTS() from glib
Do not use "self" pointer for arrays of objects

It is supposed to be used similarly as "this" in C++ or "self" in Python,
i.e. for member functions dealing with single object only and thus usage
as array pointer causes confusion.
Do not use android/ prefix when including android headers

Depending on android related development packages using
#include <android/xxx/yyy.h> sometimes works and sometimes not.
Just using #include <xxx/yyy.h> seems to have better chances of
always working.
Merge pull request #12 from spiiroin/hammerhead_led

Add support for hammerhead style sysfs rgb led controls