Note: While prepping this review, I noticed it was two commits kinda smashed together.
I also noticed this needs a man page.
Asserts will be a separate commit
This may have been posted as a review before, but I can't find it. I know hps hated the name newbus_lock()/unlock() so I've changed it.
I expect this to have a few iterations, so I'm posting it in this imperfect state now.