Refactor custom gates identities
ATM, independent identities of different gates are mixed up to reduce the total number of identities (that was done based on the assumption that it is improbable to perform certain operations, say hashing and arithmetic operations, together). This issue intends to refactor the identities in blocks (such as the arith block) and independent blocks (such as the point addition).