Introducing INodeElementAware interface

Introducing INodeElementAware interface to know which classes support NodeElement-based instantiation
Introducing AbstractElementCollection class

Introducing AbstractElementCollection class to ease element array manipulations
Making AbstractProxy sub-class AbstractElementCollection

1. preparing proxy classes for storing multiple elements
2. adding support for using ElementCollection classes as proxies elements
Transforming RadioGroup element into Radio element collection

1. remove guessing logic (the RadioGroup::getButtons method) and let user decide (via @find-by annotations) which radios to include
2. update Form typified element to support such invocation way of RadioGroup element
Fixing PHPCS violations in test suite
Added tests to verify Proxy abilities to operate on ElementCollections

1. also simplified way of injecting container into elements, that are created with a proxy
Merge pull request #48 from aik099/48-introduce-elementcollection

Introduce `ElementCollection`
Don't lowercase `NodeElement::getTagName` because it's always lowercased

Closes #55
Renaming `Radio` element to `RadioButton` for clarity

Closes #50
Adding `Abstract` prefix to some of abstract classes
Renaming test classes to match renamed classes with `Abstract` prefix
Merge pull request #44 from aik099/44-rename-abstract-classes-to-start-with-abstract-word

Rename abstract classes to start with "Abstract" word