Update RopDb mixin to allow dynamic payload size for neg

This adds a new key to allow a "safe" integer value to NEG. "Safe"
means the value does not have any null bytes after the NEG instruction,
which is typically used to calculate the payload size.
Use safe_negate_size key for msvcrt (XP)
Use safe_negate_size for java
Use safe_negate_size for hxds
Add rspec for Rex::Exploitation::RopDb
Update function documentation
Land #2467, @wchen-r7's code to allow dynamic size paylods on ropdb