specs for Rex::Encoder::XDR

Verification
-----------

- [ ] Be sure which travis is green
- [ ] Run the specs locally and ensure all the test pass

```
$ rspec spec/lib/rex/encoder/xdr_spec.rb


WARNING: Cucumber-rails required outside of env.rb.  The rest of loading is being defered until env.rb is called.
  To avoid this warning, move 'gem cucumber-rails' under only group :test in your Gemfile
Rex::Encoder::XDR ....................................

Finished in 0.04763 seconds
36 examples, 0 failures

Randomized with seed 5417

Coverage report generated for RSpec to /Users/jvazquez/Projects/Code/metasploit-framework/coverage. 16410 / 92792 LOC (17.68%) covered.
```
Unfortunately I don't have an ideal answer.  Perhaps, for now, these tests can be marked as pending so they don't get forgotten about?

I am still convinced the Rex::Encoder::XDR.decode_int! is fundamentally broken:

* It will decode to 0 if the input is actually XDR-encoded 0 or if the input is ```nil```.  This is inconsistent and weird:
```
>> Rex::Encoder::XDR.decode_int!("\x00\x00\x00\x00")
=> 0
>> Rex::Encoder::XDR.decode_int!(nil)
=> 0
```
* It will decode to ```nil``` if the input is empty or too short:
```
>> Rex::Encoder::XDR.decode_int!('')
=> nil
>> Rex::Encoder::XDR.decode_int!("\x00")
=> nil
```

I took a pass at fixing this, but it looks like at least ```decode_varray!```'s tests rely on this broken functionality, seemingly trying to handle bad input gracefully rather than failing outright.  For example, this test says that "if you read an XDR array of 2 integers but there are not actually 2 integers, return two nils".  Similarly, "if you read an XDR array of 2 integers but there is only 1, return that 1 plus a nil".  

It looks like ```decode_int!``` was changed in 2009 by @hmoore-r7 landing some work from tebo:

```
commit b13e185943c81a8a1b236c30adc65eec5fe45dff
Author: HD Moore <hd_moore@rapid7.com>
Date:   Wed Dec 23 13:44:53 2009 +0000

    Giant update from tebo, fixing up SunRPC and the nsfmount module
    
    
    git-svn-id: file:///home/svn/framework3/trunk@7961 4d416f70-5f16-0410-b530-b9f4589650da

diff --git a/lib/rex/encoder/xdr.rb b/lib/rex/encoder/xdr.rb
index cd8af44..22721cd 100644
--- a/lib/rex/encoder/xdr.rb
+++ b/lib/rex/encoder/xdr.rb
@@ -15,7 +15,8 @@ module XDR
        end
        
        def XDR.decode_int!(data)
-               return data.slice!(0..3).unpack('N')[0]
+                 return data.slice!(0..3).unpack('N')[0] if data
+      data = 0
        end
        
        def XDR.encode_lchar(char)
@@ -102,4 +103,4 @@ module XDR
 end
 
 end
-end
+end
```

What used to be there was more correct than it is now, but neither version is as correct as it should be.

@hmoore-r7, do you have any input on this?  Am I totally off-base here?