Store partial note commitments in nullifiers instead of public storage
We currently commit to the creation of partial notes by setting a value in public storage. This is costly since this storage takes up two fields in DA (key and value), and it requires an enqueued public call for the write. We can instead emit a nullifier (single DA field) and read it in public (same cost as the storage read), and skip the enqueued write entirely.
As a side-effect, this makes partial notes unique. Partial notes would typically be unique regardless, because people would not reuse the randomness, but guaranteed uniqueness is an useful property (e.g. it makes https://github.com/AztecProtocol/aztec-packages/issues/14364 much simpler to achieve, since this is an entire scenario that does not need to be handled).