[WIP] [Request for comment] Rewrite

This cleans up some code and adds a new (Experimental) stairsplus API which is more extensible.
It is backwards-compatible.
User-visible changes:
* Microblocks now have the correct sounds (everything used stone sounds before, or no sounds).
* You can now force things to the floor with shift, rather than only to the wall (Now helpfull when you can only place on a wall)
* A better circular saw formspec (the old one still works properly).
![selection_010](https://f.cloud.github.com/assets/3399154/2000819/e2a675f2-856c-11e3-9d05-c064f478265e.png)

Is the modname argument still relevant for the stairsplus functions?  `minetest.get_current_modname()` seems like it would work.
I am testing this on my Minetest server.