Replace C Binding for VixDiskLib with FFI Binding

and integrate it with DRB to allow for client/server use
Allow FFI Enum values to be exposed as constants correctly and alias VixDiskLibFFI binding class as old VixDiskLib_raw binding class
Separate VixDiskLibFFI constants so files can include them

without including executable code
Separate VixDiskLibFFI constants so files can include them

without including executable code
Major commit of new binding to VixDiskLib using FFI and DRb.
This is the demo'ed version with the additional change that
the environment variable VIXDISKLIB_BINDING is used to determine
if it will use the FFI binding or the old C binding.
This environment variable code is to be used for comparitive
testing between the two versions and will eventually be removed.
Apply Rubocop & Peer Changes to PR replacing VixDiskLib Binding with FFI

- Insure consistent indentation
- Limit number of lines per method
- Limit length of lines
- Use snake-case when naming methods & vars
- Remove incorrect comment from "ffi" line in Gemfile
- Remove ManageIQ Copyright Comments
- Remove @@connections list and locking for multiple connections per
client since this model will utilize one connection per DRb Service.
- Simplify VixDiskLib passing of Connection return value from DRb.
- Remove VdlConnection method aliasing of disconnect to release in
MiqVimBrokerMods.
- Define $vim_log in MiqVimBrokerClient test
- Don't hard code log directory.
- Add VixDiskLibServer RuboCop suggestions.
- Begin-Rescue block for DRb service handler in VixDiskLibServer
- Add list of DRb services in VixDiskLibClient to handle exit correctly
More Rubocop & Peer Review mods to PR for VixDiskLib FFI Binding

- use $LOAD_PATH instead of $:
- use recommended spacing and remove TABs
- lock around connection handling to make sure we're not exiting
- if exit has been called require another init before a new connection
VixDiskLib FFI Binding Logging Changes for Server

- Make sure the Server picks up the path for the log relative to
the path of the server instead of hard-coding it.
- When the logging methods are not passed to init format the messages
from VixDiskLib itself appropriately
Further Peer Comments from @Fryguy updated in VixDiskLib binding PR.

- Remove extraneous blank lines.
- Remove ");" in API comments copied from VixDiskLib.h file.
- Make methods private when expected.
- Remove unneeded comments (commented out code) & align other comments
- Simplify x.nil? ? nil : foo(x) construct to x && foo(x)
- Remove unnecessary server disk count hash (simple variable suffices)
- replace string concatenation with interpolation
- remove unnecessary init log arguments from client & server and mark
them as ignored by preceding the names with "_" character.
- rename confusing "binding" variable.
- Require VixDiskLibClient init to be called before connect but
do not preclude a second init call from occurring.
- Move individual classes into separate files.  This includes the
DiskInfo, SafeConnectParams, and SafeCreateParams classes from the
vixdisklib_api.rb file, and the VDDKFactory class with associated DRb
startup functionality has been separated from the original VixDiskLib
wrapper classes (VixDiskLib, VdlConnection, & VdlDisk)
Fixed an error when reload is pressed on VM filter with user input.

Changed to show quick search pop up box, when Reload button is pressed on a VM filter screen that prompts for user input.

https://bugzilla.redhat.com/show_bug.cgi?id=1082569
https://bugzilla.redhat.com/show_bug.cgi?id=1112392
Move LogFile#remove_log_file_ftp FileDepotFtp#remove_file

https://bugzilla.redhat.com/show_bug.cgi?id=965889
LogFile#file_exists_ftp? is no longer needed

https://bugzilla.redhat.com/show_bug.cgi?id=965889
LogFile#build_path_ftp is no longer needed

https://bugzilla.redhat.com/show_bug.cgi?id=965889
LogFile#connect_ftp is no longer needed

https://bugzilla.redhat.com/show_bug.cgi?id=965889
Reports Expl: Fixed a page rendering issue due to a non-existent node

Set the active node to be "root" when there is a non-existent custom
report node as a result of a delete action on the only existing custom
report

https://bugzilla.redhat.com/show_bug.cgi?id=1112574
Changed identify_record call to pass in model.

Added a new method controller_to_model that can be used to pass in model to identify_record call to fix an issue where find for VmInfra record was blowing up for MiqTemplate record.

https://bugzilla.redhat.com/show_bug.cgi?id=1110964
https://bugzilla.redhat.com/show_bug.cgi?id=1113186
Correctly detect Google Chrome on the About screen

https://bugzilla.redhat.com/show_bug.cgi?id=1106335
Change explorer tree descendants check to go directly to RBAC.

https://bugzilla.redhat.com/show_bug.cgi?id=1086015

In reviewing the code, I found that the method `rbac_filtered_objects` filters
the object it is given against RBAC.  Then, in order to remove "empty"
folders, it does a follow up pass.

However, the follow up pass was done by calling `process_show_list` which
calls into `get_view` to get the data for rendering the right side of the UI.
So basically, we are going through A LOT of code paths, particularly A LOT of
UI specific checks just to ask a simple RBAC question.  It's almost the same
as someone clicking every folder in the explorer just to see if anything
appears on the right hand side!  This PR completely removes that entire path
and just goes straight to RBAC.  I did not fix the tree-walking nor the
expensive "check RBAC at every node".

For testing, the setup is very difficult.  I was able to reproduce this in a
local test, but had to go against a real database which cannot be made public.
Eventually, we can make a real test case out of this with fake data, but I
want to get this in as it is a critical issue.  Note that since this is a
spec, and not a real UI transaction, it doesn't get the benefit of Rails Query
Caching, so it may actually be worse that through the UI.

Performance wise, the spec went from 33.2s to 23.1s.  This is about a 30%
improvement.
Rearrange method for clarity.

https://bugzilla.redhat.com/show_bug.cgi?id=1086015
Cleanup variable naming and style issues.

https://bugzilla.redhat.com/show_bug.cgi?id=1086015