IToolchain: Create Toolchain interface
ToolchainManager: Created IToolchain management class

* Manages multiple IToolchain's
* Maintains DeviceManager
XilinxToolchain: Created Toolchain class

* Manages a specific Xilinx Toolchain version
* Manages wrapping of tools
* Handles loading of devices
Rework Devices hierarchy

* Devices are supported by specific toolchains, add referencing support
Rework Synthesis and Implementation framework
Xilinx: Rework Xilinx classes for newer interfaces
Console: Update commands to use new interfaces and classes