* Add user transfer authority to swap instruction
* Add user transfer authority to deposit all
* Add authority to withdraw all
* Add authority to deposit one
* Add authority to withdraw one
* Update fuzzer
* Add user transfer authority to JS
* Add extra check on instruction fuzz
* Refactor division
* Fix tests from fixed deposit math
* Fixup comments and cleanup fuzz
* Run fmt
* Address review feedback
* Fix JS test
* Add instructions to deposit / withdraw one token
* Run cargo fmt
* Fix clippy issues
* Add JS interface
* Add tests for new instructions
* Run prettier
* Rename deposit and withdraw
* Rename withdraw -> withdraw all in program
* Rename single token instructions
* Add price parameter for flat / constant price curve
This encompasses a lot of changes to properly support the constant price
curve, and fixes some old pain points to make the whole thing easier to
use, including:
* refactor fees out of the curve
* move all fee calculations into new Fees type
* modify constraints to only care about curve types and fee
* add price parameter into constant price curve (flat curve)
* Run cargo fmt and clippy
* Revert interface changes and math update
* Run cargo fmt
* Address review feedback
* Fix fraction validation for zeros
* token-swap: Add fuzzer for swap / withdraw / deposit
* Run cargo fmt
* Make end-to-end testing work
* Fix test failures
* Cleanup for review
* Remove Clone trait for Initialize
* Fix building fuzz targets
* Fix fuzz withdraw logic to avoid ZeroTradingTokens error
* Cargo fmt
* Clippy / fmt again
* Integrate fuzzer in main workspace to share clippy / fmt
* Fix clippy
* Switch to stable honggfuzz that could work with BPF
* Update to most recent honggfuzz
* Add build / run requirements
* Add fuzz CI and cleanup for honggfuzz
* Revert to using fuzz feature to integrate with workspace
* Make fuzz script executable
* Refactor and cleanup
* Add nightly run
* Fix workflow typo
* Add runtime for pull request fuzz workflow
* Fix unrelated new clippy errors