Principal

Many changes to principals to make them more pythonic. 

Principals are modified locally and changes are pushed to the kerberos database via "commit()". 
getters and setters are properly defined to access the local copy (some members are read-only) 

date-based objects are returned as datetime.datetime or datetime.timedelta objects and the setters for these accept the datetime objects in addition to string types previously used by get_date(). None can be used to clear values. 

retvals are initialized and check against the typedef KADM_OK. 

All unit tests pass.