Implement dispatcher for EC_GROUP and EC_POINT method functions.

Initial EC_GROUP_new_curve_GFp implementation.
diff --git a/crypto/ec/ec_lcl.h b/crypto/ec/ec_lcl.h
index 614d885..1b5ee4d 100644
--- a/crypto/ec/ec_lcl.h
+++ b/crypto/ec/ec_lcl.h
@@ -64,11 +64,12 @@
  * so all this may change in future versions. */
 
 struct ec_method_st {
-	/* used by EC_GROUP_new, EC_GROUP_set_GFp, EC_GROUP_free, EC_GROUP_copy: */
+	/* used by EC_GROUP_new, EC_GROUP_set_curve_GFp, EC_GROUP_free, EC_GROUP_copy: */
 	int (*group_init)(EC_GROUP *);
 	/* int (*group_set)(EC_GROUP *, .....); */
-	int (*group_set_GFp)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
+	int (*group_set_curve_GFp)(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
 	void (*group_finish)(EC_GROUP *);
+	void (*group_clear_finish)(EC_GROUP *);
 	int (*group_copy)(EC_GROUP *, const EC_GROUP *);
 
 	/* used by EC_GROUP_set_generator: */
@@ -81,6 +82,7 @@
 	/* used by EC_POINT_new, EC_POINT_free, EC_POINT_copy: */
 	int (*point_init)(EC_POINT *);
 	void (*point_finish)(EC_POINT *);
+	void (*point_clear_finish)(EC_POINT *);
 	int (*point_copy)(EC_POINT *, const EC_POINT *);
 
 	/* TODO: 'set' and 'get' functions for EC_POINTs */
@@ -115,8 +117,11 @@
 
 
 struct ec_group_st {
-	EC_METHOD *meth;
+	const EC_METHOD *meth;
 
+	/* All members except 'meth' are handled by the method functions,
+	 * even if they appear generic */
+	
 	BIGNUM field; /* Field specification.
 	               * For curves over GF(p), this is the modulus. */
 	void *field_data; /* method-specific (e.g., Montgomery structure) */
@@ -138,7 +143,10 @@
 
 
 struct ec_point_st {
-	EC_METHOD *meth;
+	const EC_METHOD *meth;
+
+	/* All members except 'meth' are handled by the method functions,
+	 * even if they appear generic */
 
 	BIGNUM X;
 	BIGNUM Y;