feat: adds support for custom NiftyNode Ids and CSS selector by #id

When creating new NiftyNodes you can now provide a String to be used as
the id for this node. It's still an optional part. When you don't
provide an id one is provided for you (simply incremented global
counter).

Additionally this commit adds support for read-only NiftyCssProperties
which was necessary to support CSS selectors using the #id modus.