Update bionics.cpp

updated failure mechanics.  discussion here: http://smf.cataclysmdda.com/index.php?topic=2687.0
new bionics_install chance of success & skill calculation

discussion here: http://smf.cataclysmdda.com/index.php?topic=2687.0
use adjusted_skill to calculate failure_level
advanced_inventory: choose amount of charges on pickup. item.charges(): 2 optional arguments for output precision.
No point in asking if you can't pickup a single charge.
Merge, and compensate for definition of itype.volume that is completely geschtonkenflapped:
Merge item::volume precision and unit arguments with
 item-with-charges-volume-scale-defined-by-max-charges-which-is-named-stack-size
behavior. precise_value now returns multiple of 1000, since the current maximum item::max_charges() / stack_size(.json)
is 200.
Bone needle fix!

Now it's got the same weight/volume as the standard kit.
Add -Wno-stuff to silence remaining warnings, and -Werror to cause build failures if any warning types resurface.
Added bone needle to sheet recipe.
Reduced volume of both kits to one point.
Make wcwidth.c use uint32_t instead of wchar_t
Addition of Functor to encapsulate static and non-static class member JsonObject loading functions
-- May need moving of Functor definitions to new file?
Fixed "Putting on a none would be tricky"
Reinforced solar panels

Basically a solar panel with a piece of reinforced glass to protect it.
Heavy-duty kitchen unit

A kitchen unit reinforced with steel framing.
USACE repair rig

A heavy-duty, milspec version of the welding rig.
Started implementing input context and manager classes.

These classes are meant to improve abstraction of input. With them, it should be possible to retain 100% convenience of using the keyboard, while being able to fine-tune input layouts for other input methods(e.g. gamepad). They also make configuration easier, by adding the ability to easily add new input events by specifying a string name.

TODO:
- Key-combos(with keys reserved for combos, e.g. 'a)
- Multiple keys assigned to one action(alternatives rather than combos)
- System to reconfigure keys for the "current context" in-game(e.g. hit a special key in overmap view, get to redefine keys related to navigating overmap, can also serve as "help")
Improvements to new input classes.

- Separated out registering input from getting a key description.
- The help text on the bottom right of the map screen now prints the actually configured keys, rather than the previous hardcoded ones.
Renamed input_instance to input_event
Refactored input_event definition.

Instead of having separate data structures for gamepad and keyboard, use the same structures and assume that both gamepad keys and keyboard keys will fit into a `long`.

Key sequences are loaded from JSON now(but not handled).