mibuild.xilinx_vivado: support settingsXX.sh

* in the process refactor the version search, the architecture bit width
 detection, the settings search and all also for xilinx_ise
* use distutils.version.StrictVersion
kc705: add ddram pins
mibuild/xilinx_vivado: allow sharing Misc constraints with ISE: example: ISE: DIFF_TERM=True VIVADO: set property DIFF_TERM TRUE
kc705/ddram: use lighter pin syntax
mibuild: move programmer to mibuild and create programmer directly in platforms
genlib/fifo: use synchronous memory read instead of additional register

The latter causes problems with InsertReset
mibuild/generic_platform: add recursive parameter to add_source_dir
mibuild/programmer: fix XC3SProg init
platforms/kc705: use Vivado by default
platforms/kc705: use XC3SProg
platforms/kc705: add automatic clk200 constraint
platforms/kc705: fix speed grade
mibuild/xilinx: share more code between ISE and Vivado, use special overrides with Vivado, merge xilinx_tools into xilinx_common
genlib: add reset synchronizer
mibuild/xilinx: connect CE on reset synchronizer FFs
typo
bus/dfi: add CKE and RESET_N
platforms/kc705: remove DDR3 multirank pins
mibuild/programmer: remove unneeded needs_flash_proxy attr
vivado: make tcl a list of commands, add reporting