¿Qué es mutation observer API en JavaScript?