Add Principal data object implementation

Summary: Add a Principal data object implementation

Reviewers: claus.due, #forgetit-dev, dkd-doan

Reviewed By: #forgetit-dev, dkd-doan

Differential Revision: https://phabricator.dkd.de/D419