Usability issue - datetime anchored offset for (-) MonthBegin/MonthEnd
#### Code Sample, a copy-pastable example if possible

```python
pd.Timestamp('2017-01-02 00:00:00') - pd.tseries.offsets.MonthBegin(n=0)

```
#### Problem description

Currently the above produces Timestamp('2017-02-01 00:00:00') which is the next MonthBegin point instead of the previous
I think this is a usability issue - I don't see who can benefit from this behavior.
My expectation is that when I use parameter n=0,  it makes sense for it to snap to the next anchor point IN THE DIRECTION of the offset and stay there INCLUSIVE of the snap point. This is really useful because it allows you to stay within the same month no matter your starting point.
This is exactly how it already works if you move forward like in

pd.Timestamp('2017-01-02 00:00:00') + pd.tseries.offsets.MonthBegin(n=0)
which gives you Timestamp('2017-02-01 00:00:00')

Basically you want to be able to take a random date in a month INCLUSIVE of start and end day of the month and use (-) MonthBegin(n=0) offset in a manner where you always moved to the beginning of the same month 

I understand that there's a work-around to use 
```python
pd.Timestamp('2017-01-02 00:00:00')+pd.tseries.offsets.MonthEnd(n=0)-pd.tseries.offsets.MonthBegin(n=1)
```
This will get me into Timestamp('2017-01-01 00:00:00') no matter where I start in January (inclusive of the ends) but I just think that this expression is really what (-) MonthBegin(n=0) is supposed to do

Please note the same usability issue exists for (-) MonthEnd

#### Expected Output
so my desired output for the above would be 
Timestamp('2017-01-01 00:00:00')
#### Output of ``pd.show_versions()``

<details>
# Paste the output here pd.show_versions() here

</details>
