PyRIC CHANGES

v 0.0.2 to 0.1.0
   o added ifconfig/iwconfig functions to pyw
   o reworked exception handling
    - all exceptions from libnl, libio & pyw are pyric.error
    - pyw will allow pyric to pass through
    - reworked errorcodes to derive from errno
   o added _iostub_, _nlstub_ and reworked traditiona commands to utilize these
   o finished porting nl80211_h and nl80211_c (for attribute policies)
   o pyw no longer provides familyid as a public function, rather it now uses a
     private global value for the nl80211 family id and will instantiate it one
     time only. In this way, callers do not not have to worry about retrieving and
     passing it
   o regdom get & set implemented
   o info implemented
   o removed radio/Radio class (shouldn't be the responsibility of this)
   o added channels.py (provides channel/freq functions)
   o added RFI page for notes/observations/questions
   o changed utils.py to device.py
   o updated libnl
   o added channel set & get
    - channel get only works when device is associated
    - channel set only works when card is in monitor mode and all other interfaces
     have been deleted
   o added device add & delete
   o rewrote pyw function to handle one-time & persistent functions using a
    single function interface for each command
   o added Card class and wrote functions to handle it in pyw
   o implemented basic help functionality (for nl80211)
   o added monitor flag(s) support in devadd
   o began work on a user guide
   o added nested attribute handling
   o added partial phyinfo handles all but supported channels/bands
   o fixed bugs in devinfo and phyinfo
   o added setup.py and required files
   o at least one card (ath9k_htc) has an unknown supported command, added a
    wrapper around the list IFTYPES to handle commands not listed
   o libnl: attribute related i.e. nla_* moved out of GENLMsg class and made as
     standalone functions
   o in pyw
    - added modeset/modeget in pyw
    - readded freqset in pyw
    - added devcmds in pyw
    - annotated (in comments) if fcts needed root privileges
    - added functions to get/set ip address, netmask and broadcast
    - fixed PEP8 errors
    - added function pulling supported freqs out NL80211_ATTR_WIPHY_BANDS
     * ATT using _getfreqs_ which attempts to find the packed version of every
      freq
     * nl80211_c.nl80211_parse_freqs works but is slower than _getfreqs_ and
      uses several hacks which may make it invalid for certain cards
    - added 4.9GHz frequencies to channels.py
    - fixed _validmac_ to validate both uppercase & lowercase hex characters
    - added devfreqs, devchs
   o unittest completed 61 tests ran in 5.360s
   o added rfkill (still working on it)
   o production release

v 0.1.1 - 0.1.2
  desc: wireless nic library: wireless radio identification, manipulation, enumeration
  includes:  /nlhelp /lib /net /utils pyw 0.1.2
  changes:
   o restructured hierarchy
    - renamed device to hardware
   o added mac address related functions to hardware
   o split rfkill into functions file and definition file
   o added block/unblock to pyw
   o updated pyw to handle the newest version of libnl.py's processing of nested
     attributes

v 0.1.3
   o added this File, a revision history
   o fixed issues
     - # 13: Failed to process commands.help
     - # 14: nlmsg_fromstream can incorrectly return error based on stream size
     - # 11: MemoryError on nla_parse_nested()
   o added nla_put_flag to libnl
   o identified (unopened issue) and fixed error with ouifetch having invalid path
     of default oui file
   o moved parseoui from hardware to ouifetch renaming to parse
   o removed ouifetch execution ability - parse and fetch must be called w/in
    python console. Will eventually add this capability as as top-level program
   o added ieee80211_h.py to net/wireless
   o added supported ciphers to pyw.phyinfo dict
   o added functions
    - pwrsaveset and pwrsaveget
    - covclassset
    - retryshortset
    - retrylongset
    - rtsthreshset
    - fragthreshset

v 0.1.4
   o added functions:
    - isup
    - covclassget
    - retryshortget
    - retrylongget
    - ifinfo
   o modified devadd. User is allowed to submit a Card object or a physical index
   o removed hardcoded values for covclassset, retry(short|long)set, retsthreshet and
     fragrthreshset
     - constants now defined in wlan.h (see below)
   o removed return True where redundant i.e. when setting mac address we can assume
    it worked if no error was thrown
   o renamed ieee80211_h to wlan
   o didn't like the incestual circular pyric error (libnl shouldn't know about pyric)
    - replaced pyric.error with defined error in libnl and libio
    - pyw has to catch libnl and libio errors and reraise as pyric errors
    - retooled exception messages
   o added new functions from 0.1.3 and 0.1.4 to unittests
   o updated nl80211_h w/ additional constants included in kernel v 4 header
   o added propietary concept of set to netlink processing
    - nl80211 appears to define a set of like-sized elements (see cipher_suites)
   o modified pyric exceptions
    - imports errno codes into pyric, conforming how functions access error codes

v 0.1.5 Begin STA associated functionality
  o added functions:
   - isconnected
   - disconnect
   - link
   - stainfo
   - devset
   - phylist
  o updated nested netlink attribute handling - my understanding of it was incomplete
   - There are still occasional errors
   - nested attributes are parsed as 'far' as possible
  o reupdated nested netlink attribute handling - this time it really works
   - nested attributes are now parsed correctly, any errors are a result of
    incorrect packing on the other side or packet corruption and the entire
    unparsed attribute will be returned.
   - nla_parse_nested has been changed to return a list of tuples
     t = (index,attribute) which (TODO #41) eases the burden on the calling
     function
   - fixed 're'nesting of nested attributes
  o parsing wiphy bands (issue #7) is now fully functional and no longer relies
    on a hacked fix
  o devstds now uses phyinfo to determine standards Card supports
  o completely 'remodeled' functions in pyw to take advantage of new parsing
   from libnl (have left some of the error checking in place as a backup until
   testing confirms that the new nla_parse_nested is bug-free)
  o fixed error on devadd during restoration in examples/pentest.py
  o fixed output error, incorrect labeling
  o fixed output error ASW max tx power
  o added phylist w.r.t issue #17