Optimisation of QCA majority-based logic using Genetic Programming