Current Measure on 230V 50Hz
First off, realize that to accurately measure power for anything but a purely resistive load you need to multiply instantaneous current by voltage to get instantaneous power, then average the results over the full mains cycle. If you do this then you shouldn't rectify the signal because that would lose its sign, resulting in wrong readings when current and voltage are not in phase. 

If you put the shunt in the neutral ('ground') lead then you don't need to divide the voltages down or use a 'difference' amplifier. Just amplify the signal sufficiently (x10?) to get the amplitude you need for further processing. 

You also need to measure voltage. You can use a simple voltage divider for this. With the shunt in the neutral lead the voltage reading will not be totally accurate, but the error is small enough to ignore (0.16V / 230V = 0.07% error). 

The Arduino's ADC works on positive voltage only, so you need to bias the signals to half the ADC's input range to capture AC waveforms. If you apply DC bias to the current signal before going into the op amp then it will only have to amplify positive voltage and you won't need dual supply voltages. Bias voltage can be generated by injecting a small current through a resistor, like this:-







simulate this circuit &ndash; Schematic created using CircuitLab

Your circuit is not isolated from the mains. That's fine so long as the user cannot contact any part of the circuit, but to avoid the risk of electrocution you must make sure that it is properly insulated (even if misused or broken). When working on the circuit 'live' you should power it through an isolating transformer, and perhaps use low voltage AC for initial  development and testing.