The Semantics and Proof Theory of the Logic of Bunched Implications (Applied Logic Series)