add avail_subclasses function + unit test

ported from `avail_easyblocks` method in `easybuild/tools/options.py`, required for https://github.ugent.be/hpcugent/easytest/pull/1

let's see what @stdweird has to say about this one, because I'm fairly sure he's the original author ;)
it does use both, i.e. `easybuild.easyblocks` + `easybuild.easyblocks.generic`, and `EasyBlock` + `Extension`

the order in the dict doesn't matter, all subclasses are listed as a key and have information about their children, so a tree can be constructed from that (as is done in `avail_easyblocks`)