Bevel and Subdivision surface issue
The problem is, that you have a lot of long, stretched out faces on the top of the model. Not something you want to have, in general. Consequently, some edges of the top surface run parallel and very close to the (bevel)edge. When you add the bevel, you'll end up with overlapping geometry.
You should try to redo the geometry at the top and generate a more grid-like result.
You can achieve this by deleting all top faces in edit mode. Then, select the edge and press F to create a face. - Then press I to inset the face. Make sure to inset far enough to leave space for the bevel. (While insetting is active, you can toggle the Boundary option by pressing B. This prevents the extra face at the boundary of the mirror modifier.)
Inset once more for good measure.
This is what it should look like: 
Then, (IMPORTANT) - Apply the scale of the model, or the bevel will look off. In object mode, press CTRL + A -&gt; Scale.
Edit:
In order to have the Subdivision Modifier behave well, you'll want to add another holding edge on the side part. In edit mode, press CTRL + R to get something like this: