In order to understand why Blender includes normal you first have to know how the lighting is calculated in rasterization process.
The most basic calculation of the amount of diffuse light a surface receives is by taking the direction of the light and the normal, and calculating their dot product. Take an example:
Let's say that the light comes from the top and the normal faces upward: in this case, as you know, the face would be fully illuminated; in mathematical terms, using Blender coordinate space we would have a normal direction vector: (0,0,1) and a light direction vector (0,0,-1).
Taking dot product (which you also should know in order to understand my answer) of those two - you would end up with value of -1. This way we know that the light is going the opposite way the normal goes.
If we negate this value we get 1 and we can take it as the amount of the diffuse light the face receives.
In the other case - if you take a light direction that goes sideways(it comes from the side of the face) - that is a light direction given in a vector (1,0,0) - the dot product of this new light direction and the face normal will be equal to 0. No need to negate 0 in this case ;)
The final case is when the light is "behind" the face, or speaking in context of the example - it shines from below - that is, the light direction is given by a vector (0,0,1). In this case the dot product would yield a value of 1. Again we would need to negate it and the result would be a value of -1 as the amount of the light the surface receives.
As you know - a surface cannot receive a negative amount of light, so what we do is we clamp the result to a rage of 0 to 1.
Here is a visual representation of these cases:
Light from above and the plane with a normal:
Light from the side and the plane with a normal:
Light form the bottom and the plane with a normal:
If we take this results and results of every case lies in between, and as mentioned clamp the results to a range (0 to 1) - then, in the simplest case - we could map this range to a color value in computer graphics, - that is from black to white.
Without the normal we could not determine how much light the surface receives - we could not determine if it is facing at the light source. This concerns every rendering algorithm out there.
Now quoting your question: you say you want to "treat both sides of the mesh as if they had the normal". The first thing is - we don't really have "two sides" of a mesh - we only have a single face of a triangle. And even if we had two sides of a triangle - we would have to know which side to render, as they both would lie on a single plane. It could be perhaps technically possible but inefficent - the rendering algorithm would have to determine which side to render by taking the one that faces to the camera. That's the reason why setting up normals is left to the user.
On the other side I think that it would be nice to have such a feature built in, but I guess it would be very cumbersome to implement in OpenGL - which is used to draw the 3D viewport - and in some cases would cause a performance hit (when using high poly models).
Actually you asked a pretty nice question, which made me wonder a little bit.