Create shell_to_meterpreter.rb
Update bourne.rb
Update bourne.rb
Update core.rb
Update shell_to_meterpreter.rb
Update shell_to_meterpreter.rb
Code cleanup

Fixes based on response from @timwr and @kernelsmith.
Retested with Ubuntu and Metasploitable 2 to validate proper payload. Also tested for port conflict detection after the change.  Returning false on line 243 simplifies the if logic on line 251/252.
Improve detection of failed uploads

leaving aborted = nil was causing unexpected behavior when the upload failed.  Explicitly setting aborted = false by default corrects this issue.
Hide unneeded options
Split generic_sh in echo, perl and ifs encoders
Delete not necessary end keywords
Modify encoders to allow back compatibility
Delete debug print_status
Allow some modules to use the old encoder
Second review of modules which shouldn't be affected by changes
More cleanups of modules which REALLY need the 'old' generic encoder
Delete debug print_status
Update core.rb
Update for most recent PowerShell.rb

This update makes the module compatible with Meatballs' march PowerShell changes mentioned earlier (lines 112/113).  It also includes changes recommended by Timwr and about 2/3 of the issues mentioned by Rubocop.  I didn't make some of the Rubocop changes based on HD's comments in IRC that it was still being tuned to meet the project's requirements.
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).