Bottom-up self-assembly of macroporous ZnO nanostructures for photovoltaic applications