Covalent layer-by-layer assembly—an effective, forgiving way to construct functional robust ultrathin films and nanocomposites