Theory of Factorial Design: Single- and Multi-Stratum Experiments