Fractals, Randomization, Optimal Constructions, and Replication in Algorithmic Self-Assembly