migen/test/support: allow easy re-setUp of the testbench with different parameters
migen/test: if SimCase is a TestCase, it's run in every module that imports it
genlib/cordic: cleanup, documentation, unittests
examples/cordic: scripted exploration of parameters space
genlib/sort: add bitonic, combinatorial sorter

complete with with api documentation and unittests
examples/cordic/cordic_impl: do not fail if build dir does not exist
examples/sim/cordic_err: fix rms_err function name
genlib/divider: fix diff computation
migen.fhdl.size: add fiter(), fslice(), and freversed()

do not overload __len__, __iter__, __reversed__ as not all valid
expressions (ints and bools) have them. furthermore len([]) is and
should be different from flen([]) (the later raises an error). keep
__getitem__ as an exception that proves the rule ;)
migen.fhdl.tools: move flat_iteration to migen.util.misc as tools imports other things
migen.fhdl.structure: have Cat() flat_iteration-ize its arguments
migen.fhdl.size: verify fslice for negative values