Take first letter of each word, leave spaces and punctuation Shrink each word in a string of group of strings to single letters delineated by spaces or punctuation.

Example

I'm a little teapot,  short and stout. Here is my handle, here is my spout. When I get all steamed up - hear me shout!   Tip me over and pour me out. 


becomes

I' a l t, s a s. H i m h, h i m s. W I g a s u - h m s! T m o a p m o. 


Edit  -  if there are multiple spaces,  preserve only one space.  All punctuation should be preserved,  I missed the apostrophe.  Yes this is code  golf :-).
CJam, 13 bytes
r{(\'A,f&amp;Sr}h

Works if I can consider only the common punctuation characters, and the output can have trailing spaces. (Thanks to Dennis.)
This question needs much more clarification...
CJam, 17 16 bytes
r{(\eu_elf&amp;Sr}h&amp;

Try it online.
Explanation
r          e# Read one word from input.
{          e# While it is not EOF:
    (\     e# Extract the first character.
    eu     e# Convert the rest to uppercase.
    _el    e# And lowercase.
    f&amp;     e# Delete characters in the first string if not in the second string.
    S      e# Append a space.
    r      e# Read the next word.
}h
&amp;          e# Discard the last space by intersecting with empty string.