Adding new superclass for C ops

This adds a new class (gof.COp) for new C ops to inherit from. It allows to have the C implementation in a different file than the Python implementation and it also takes care of a few C-related methods of the Op class automatically. This pull request also updates the Extending Theano with a C Op tutorial to include an example using this new class.
I really don't like having to use `<<<<NODE_NAME_PLACEHOLDER>>>>` directly in the C file.  It is painfully clear to anyone somehow used to C that it is not a real macro and the name is long to type and easy to type just slightly wrong (miss one of the brackets).

I would suggest defining a macro like `#define APPLY(name) name##<<<<NODE_NAME_PLACEHOLDER>>>>` or something to make it easier to use.  This would be used like this:
```C
 // Apply-specific support code
void APPLY(vector_elemwise_mult_)(
 DTYPE_INPUT_0* x_ptr, int x_str,
 DTYPE_INPUT_1* y_ptr, int y_str,
 DTYPE_OUTPUT_0* z_ptr, int z_str, int nbElements)
{
 for (int i=0; i < nbElements; i++){
  z_ptr[i * z_str] = x_ptr[i * x_str] * y_ptr[i * y_str];
 }
}
```