Space-Time Coding: Theory and Practice