Streamlined eAPI + Other "Useful changes?"

Added getVersionInfo(), there was allot of code that constantly kept calling "show version" creating a new connection and waiting. Now there's one call, and all the other methods use the version_info variable to read this info (only one call made), should be more efficient.

Added _versionList() which returns a list of the version string, unconverted. This allows to convert the members of the list to int and check for version #, for command compatibility, first instance of this is in getHostname().

Changed getHostname() to test the version and run the correct command depending on the version found.

Added getFQDN() to return the fully qualified domain name of the device, but has not been added to main.py yet, in case it's not compatible across platforms.

------

p.s

We may want to re-think how getFacts() works, every call to it, refreshes all the values and there are at least two calls by just initializing the object. i.e:

with arista, the __init__ method has a call to getFacts(), then deviceCalls() has a line to getFacts(), then every other subsequent one after that. 

I modified the eapi.py to show, __init__ now calls refreshFacts(), since this call was already made, now deviceCalls line to getFacts() is just using the data already available. If the information needs to be refreshed, then a call to refreshFacts in device will call refreshFacts in the platform specific version.

I did not change main.py to reflect this, only the arista part just want to make sure we're in the same page and discuss it a bit more.