Mesh arithematic

Methods for mesh arithmetic (+, -, *, /) are now implemented  two ways in the Mesh class:

The first is in-place arithmetic, e.g.:
```
mesh_object_1.add(mesh_object_2)
```

The second is operator overloaded arithmetic to return a new object, e.g:
```
mesh_object_3 = mesh_object_1 + mesh_object_2
````

These methods search both objects for tags and preform the requested operation on the tags that match. The methods are inherited by the StatMesh class. The actual arithmetic operations are preformed by a private function that behaves differently for Mesh and StatMesh objects, yielding the same behavior as duck-typing the methods in the StatMesh class (which was not explicitly done).

Tests are written to cover all combinations of in-place/operator overloading, Mesh/StatMesh, and (+, -, *, /).