Reduce the chance of file descriptor leaks in SMBServer

This patch addresses three observed error conditions in long-running SMB services.

1. A call to get_once() in on_client_data could raise a Timeout exception and bubble all the way up to the dispatcher. This should technically never happen, but gets triggered for zero-byte writes and clients closing their connections. The fix was to handle the exception and lower the timeout. The change was tested with a number of SMB clients to make sure this didn't introduce any regressions.

2. A client could indefinitely keep a connection to the SMB server. The SMB server now disconnects idle clients after 120 seconds of inactivity (configurable).

3. A client could send a large amount of data that was invalid SMB traffic, using up memory as a potential DoS.

Caveats: The idle client sweep occurs every 100 requests or at an interval equal to the idle timeout. A client could fill up the entire connection table on its own, preventing the sweep from occurring by preventing new connections. Fixing this would require a dedicated thread to sweep for idle connections and is a more aggressive attack than this patch is designed to defend against (accidental connection flooding, basically).
Fix use of datastore['SMBServerIdleTimeout']
Replace 'rescue nil' with DRY-violating versions :(
Add specs for Rex::Encoder::Alpha2::Generic
Refactor specs for Rex::Encoder::Alpha2::Generic
Include it_behaves_like
Fix shared examples
Use non aphanumeric badchar
Add specs for Rex::Encoder::Alpha2::AlphaUpper
Add specs for Rex::Encoder::Alpha2::AlphaMixed
Add specs for Rex::Encoder::Alpha2::UnicodeUpper
Add specs for Rex::Encoder::Alpha2::UnicodeMixed
Add specs for Rex::Oui
Verbose messages on why a connection is closed
add exploit for CVE-2011-1485
typo
Fix @lsanchez-r7's feedback, single expectation per test and avoid explicit use of subject
Merge pull request #4 from rapid7/master

merge
Add exploit for Track-It! file upload vuln
Add exploit for Track-It! domain/sql creds vuln