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
fhdl.size: rename to bitcontainer
lx9 fixups
add initial ztex_115d platform
add zedboard platform
usrp_b100 platform
vivado from florent (cherry pick b9ff20cc)
add trce call for some timing analysis. this is fast and useful information
add a default promgen invocation
temporary changes for spartan 3a