Added checks for version_info and Updated getFacts

added checking to make sure self.version_info exists in the methods that use it, otherwise it gets instantiated. Moved the initial call of version_info to getFacts() to reduce a bit of redundancy and make its somewhat more efficient. Since getFacts() is called when device() is instantiated.