Remove unnecessary Item() constructor

Remove one (of the 5!) Item constructors - it was identical to another
apart from taking a std::string& instead of (char*, length) for the
key.

Change-Id: I3b123ee0c380e536bab6b8de8814db9e160db709
Reformat Item initializer lists

Make it easier to see how they are similar/differ.

Change-Id: Ia140dc18d5445d93aca4ac943ce481a5dcf2fd8d
Move Item member initialization to initializer list

More refactoring to prepare for merging consturctors, also is more
efficient as we don't default construct the std::string for key before
assigning it.

Change-Id: I3c6e45ea9f3303e5d29f7231ae282f1d59efb31c
Remove unnecessary Item() constuctor #2

Remove another constructor of Item, the one which takes only a data
size - i.e. allocates a value but doesn't copy it in. In all existing
use-cases this can be replaced with either:

a) The constructor which does copy the data in, as the use-case was
   doing performing the copy in two stages (construct Item of correct
   size, then memcpy()).

b) The consturctor which takes both ptr and size, with with ptr==NULL
   - this is already handled by the setData() private method of Item.

Change-Id: Iffbfef423e82bb021f74860a72dc7b5936bf2215
Add explicit Item copy-constructor, reduce uses of value_t constructor

Further refactor and simplify Item construction:

- Add an explicit Item copy-constructor for use when copying items
  (e.g. MutationResponse).

- Change uses of Blob-passing constructor to just use the {char* data,
  size_t len} variant instead - in three use-cases the client just
  creates a Blob immediately before calling the constructor; might as
  well let the consturctor do the work.

This reduces the users of the Blob-passing constructor to one -
StoredValue::toItem(). This already has a value_t and so we do want to
make the new Item point to it, hence can't change this to use the
{data, len} variant.

Change-Id: I7c0ff575da70b24290c49d371e1aff14ef160d55