Fix remote /MODULES bug
Fix various problems with ModuleManager.

- Fix downloading the module list on very new versions of Perl.
- Fix an off by one error caused by array sizing starting at -1
  instead of 0 like in every single other language (!!).
- Fix vague error messages when LWP encounters an error.
- Fix LWP::Simple being used before we have checked whether it is
  available.
Merge pull request #693 from SaberUK/insp20+modulemanager-bugs

[2.0] Fix various problems with ModuleManager.
Fix ACCEPT propagation bug when it got a nick prefixed with +

Fixes #696
Does not apply to 2.2 due to Attila's rewrite of the module
Fix m_override refusing to override modes if the user holds halfop or higher in the channel
m_spanningtree Fix nick TS desync on SVSNICK

Don't accept invalid timestamps
Allow ranges beginning with 0 in m_channames
Fix the HELPOP database being destroyed when a rehash fails.
Merge pull request #714 from SaberUK/insp20+fix-helpop

[2.0] Fix the HELPOP database being destroyed when a rehash fails.
Show +i users on a channel to opers having the channels/auspex priv who do /NAMES from outside of the chan

Discovered by @Cronus89
Fix possible use of invalid iterator on module unload

When a module quits a user or destroys a channel in OnCleanup() the object is no longer in the container being iterated by the time OnCleanup() returns
Handle SASL failures during SASL_INIT (wrong mechanism, etc.)
Support SASL messages other than 'C' and 'D'
m_mlock Only deny the mlocked mode from being changed instead of denying the entire mode change if it contains a single mlocked mode

Fixes issue #615 reported by @BlacklightShining
m_sajoin Send global snotice when the join happens

Remove "sent remote SAJOIN" local snotice

Fixes issue #382 reported by @JDowny
Merge pull request #732 from grawity/saslfix

m_sasl: properly handle bad-mechanism failures
Fix OOB error in sa2cidr()
m_alias Fix out of bounds string access that happened with certain replace strings
m_dccallow Increase penalty for /DCCALLOW help
Use FindNickOnly() in a few more places if a local user is performing an action to prevent UID walking