A European court has ruled that Russia's so-called "gay propaganda law" is discriminatory, promotes homophobia and violates the European Convention on Human Rights.