Make FWK as a python package

Package FWK into a PyPI package so it can be installed using pip.

Currently, FWK is included as a Git submodule in the project. This approach was based on the previous version and allowed the rapidly changing framework to remain fixed within the project. There was an idea to package it as a standalone tool, but the package type was not defined. As the project increasingly relies on Python tools, transitioning to a Python package has become a natural step.

The initial version of FWK as a Python package will be implemented as a Makefile wrapper. In the future, this should be updated to use native Python modules, such as Invoke, instead of Make.

In future this will allow easier integration of other Python tools or scripts.

This change will also make possible to use FWK with stand alone FWK modules with no need to create a dedicated project. Like in case of verification projects.

Initially, for the user, usage will change with just replacing make with fwk:

from:

make cfg=sis8300ku project build

to:

fwk cfg=sis8300ku project build

Later with the move to Invoke, the interface will change.

Installation:

Still, FWK can be added to the project as a git submodule, or using PyPI package manager.

pip install fwk

With optional tools:

All tools:
pip install fwk[all]
Development tools:
pip install fwk[dev]
Co-simulation cocotb tools
pip install fwk[cocotb]