Changed Joystick to use Dispose pattern

The finalizer pattern used previously is not the best way to clean up managed code (DirectInput joystick class).

See http://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=vs.110%29.aspx  for detailed explaination of why not to call managed types in a finalizer.

This impl will properly and reliably release/reclaim the unmanaged DirectInput resources.