The MIMO Iterative Waterfilling Algorithm