[feature] make scratchpad track its own tiles
Move the scratchpad tiles into an internal concern: - the scratchpad does the allocation - the scratchpad tracks available tiles internally - the user can ask for the scratch baseptr. This is necessary to abstract move-based scratchs, and to remove from the user responsibility of maintaining tiling and baseptr tracking. We still fail-hard when tiles are not available, and the design is not thread safe. But we are getting there.