Add MEDRectAlignWithRect

This adds `MEDRectAlignWithRect` which allows users to align one rect with another one on one edge.

Here's some lovely ASCII art to explain what's going on:

Before:
```
+------+
|      |
|      | +--+
|      | |  |
|      | +--+
|      |
+------+
```
After `MEDRectAlignWithRect(inner, outer, CGRectMinXEdge)`
```
+------+
|      |
+--+   |
|  |   |
+--+   |
|      |
+------+
```

We could also introduce our own `MEDEdge` options enum that allows something like:


Before:
```
+--------+
|        |
|        |
|        |
|        |
|        | +--+
+--------+ |  |
           +--+
```

After `MEDRectAlignWithRect(inner, outer, MEDMinXEdge | MEDMaxXEdge | MEDMinYEdge)`

```
+--+--+--+
|  |  |  |
|  +--+  |
|        |
|        |
|        |
+--------+
```

`MEDRectAlignWithRect(inner, outer, MEDMinXEdge | MEDMaxXEdge | MEDMinYEdge | MEDMaxYEdge)` would then be equivalent to MEDRectCenterInRect(inner, outer) in #20.