MadProphet:
I understand the 8266 might be able to handle it all
Indeed, it can easily do that. Actually, it is a SOC (System On a Chip) with a faster processor and more memory than a regular Arduino, it can even run a web server, host a web page and images etc. You can program it like a normal Arduino if you use Ivan Grokhotkov's ESP8266 Arduino core. You can control its I/O using the familiar digitalRead/Write functions, for example.
As for power, I'd go with a 12V SLA (Sealed Lead Acid) battery (like a car battery). Why? 1. You've got your 12V for the solenoid, 2. They are much easier to charge from a solar panel than Li-Ion batteries.
Then just use a step-down converter to get 3.3V for the ESP8266.
How you drive the solenoid, depends on its current draw: if it's under 0.5A, you might get away with a simple NPN (power)transistor. If it's higher, I'd go for a MOSFET, you'll then probably also need 2 extra transistor, to drive the MOSFET with 12V (the 3.3V from the ESP8266 won't be enough to turn on the FET completely, unless you use a low gate voltage, logic level MOSFET). You could also use a relay. Make sure however, that you use a flyback diode, since the solenoid is an inductive load, and will produce high voltages when suddenly turned off, that may damage your transistor, or cause sparks in the relay.
Most MOSFET drivers you'll find online are badly designed, they're just simple emitter followers, that keep the voltage the same as the input, which is not what you want. Other designs invert the signal, meaning that they turn on when nothing is connected, and turn off when you apply 3.3V. This is absolutely not what you want, you want your valve closed if your ESP8266 crashes!
Take a look at my article on driving loads with Arduino.
Good luck!
Pieter