In this PR we fully implement BMD remote protocol v3. This includes implementing a proper error type for failed ADIv5 transactions, encoding what caused the failure in a way that can be properly handled by the caller with a match statement or similar.
The branch this is on will be used for additional remote protocol development as this is the third of a series of 4 or 5 PRs implementing full remote protocol support into bmputil, so should be left after merge.
This PR did not in the end address the need for an improved Response type, however the changes that are included allow a better understanding of what such a type will need to look like, allowing its address in the next PR. There will be an additional PR after that one as RSP v4 support will need to be implemented across a couple of PRs on account of the RISC-V accelerations needing their trait defining, and error type. It is because of this that the Response type work was not completed in this PR.