Higher-Rank Graph C *-Algebras: An Inverse Semigroup and Groupoid Approach